能力值:
( LV2,RANK:10 )
|
-
-
2 楼
byte 是个数据类型
下边的是 指向 byte类型的指针
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
应该是指向"指向 byte类型的指针"的指针
|
能力值:
( LV5,RANK:70 )
|
-
-
4 楼
他们取的值有什么不同么
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我想知道 这和C++ 有什么关系???
不要把C 和C++ 弄混 实际上他们是两种不同的语言,c++只是对C的兼容性更好些罢了。
byte 是数据类型 typedef unsigned char byte
*(byte*) 是指向指针的指针.
要问具体区别如上,宏观讲:一个是自定义的数据类型,另一个是指向指针的指针。
至于楼主说的取值 请用sizeof(byte) sizeof(bype*)。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
byte 是数据类型 .
*(byte*) 是指byte的指针.
*(byte*)后面是不是应该还有点东西啊。
例如把某些指针转换成byte*类型的指针.也可以是函数的返回值需要强制转换成byte类型的指针。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
楼上第二句话的第一个*号忘去掉了.^-^
Byte是占一个字节的变量类型
Byte* (或者说PBYTE) 是指向Byte类型的指针
里面存的是个内存地址 32位下 指针都占四字节
*(Byte*)也就是*PBYTE 开头的那个*号 你可以理解成 为某个地址取值 或为某个指针变量取值 取出来的值就是这个变量类型
一般 *(PBYTE)后面应该接着一个变量 不管是什么类型 首先被转为一个BYTE指针 然后从这个地址取值
个人觉得 BYTE和*(PBYTE)没什么区别 都是BYTE类型 都可以赋值和取值 只不过一个麻烦一个简单 一个C帮我们实现 一个是我们利用C提供的功能自己实现
说的好象有点复杂... 多用用就熟悉了 ^-^
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
引用:*(byte*) 是指向函数的指针,此函数指定参数为byte型指针.
这个说法不对吧。应该是指向一段内存地址(被定义为字节型的数组)的按字节取的数据。
Byte很清楚了。
比如定义一个(byte*)PData ;假设PData 初始化并被赋值为00401300,意思就是把该地址以后的数据全部看成一个 字节型 的数组。
*(byte*)PData 意思就是把这个地址 00401300 所在的数据按字节取出来(赋值给某变量)。
附:
byte i; word j; dword k;
PChar PData = 0x004013043; 内存地址Ox00401343以后数据为 12 34 56 78 90 ab cd ef
i=*(byte*)PData; // i=0x12
j=*(word*)PData; //j=0x3412
k=*(dword*)PData; //k=0x78563412 ;如果此时 PData ++ . 则 k=0x90785634 ; 而我们通常会4个一取,所以应该 PData+=4才可以取到 后4个字节的值.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
看错了 *前面没类型 ……
楼上正解
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
8楼说得很好,只是有小错误,应该是PChar PData = 0x00401300
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
10楼提醒的对。其实我开始就是PChar PData = 0x00401300;写完感觉PData 取个4的倍数不太好,就故意取个0x00401343以杜绝误判,结果发现其他地方没改,抱歉。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
如果把第二个改写为 "byte **" 应该可以看懂了吧.....
|
能力值:
( LV9,RANK:610 )
|
-
-
13 楼
我觉得楼主 对指针理解的不深刻
谈一下我对指针的理解,分3个方面
1.指针是一个变量
2.指针指向一个地址
3.指针的类型决定了对它指向的地址空间的数据的解析方式
说下第3点
BYTE 型的指针 (即 定义为 BYTE *p = (BYTE *)0x000....) 取指针内容的时候取它指向的地址的前1字节大小的内容(因为 sizeof(BYTE) == 1)
WORD 型的指针(即 定义为 WORD *p = (WORD *)0x000...) 取指针内容的时候取她指向的地址的前2个字节的内容(因为 sizeof(WORD) == 2)
但是单纯从数值(指针变量的值)上看这2个变量是没有区别的
|
能力值:
( LV12,RANK:290 )
|
-
-
14 楼
楼主好像是问的取值吧。。。。
PVOID p = .......
byte b1 = (byte)p;
byte b2 = *(byte*)p;
是指这个的区别?
|
|
|