不管是在什么样的系统下 ,都要区分 指针本身 和指针所指向数据的类型
如 定义 char *p; 则p指向的内容是 字符型的 但是绝不意味着p是字符型的 也就是 p不一定是1个字节 当然 int *p 也是如此;
你可以用sizeof 来查看
比如定义 type(如char int long...) *p ; 你用 sizeof(*p) sizeof(p)
如在 32bit系统中,无论前面的type是整形、实形……, sizeof(p)的值都一样都是4;在8bit系统中(如单片机系统) 应该是1或2(这个应该跟单片机的型号相关不同的单片机系统 应该也不一样)
这就是说 指针本身 是不区分类型的 它只是一个代号 用来指向不同的东西
就像 可能一个班级50人, 一个100人 不管班级的人数有多少,它都叫1班、2班 都是俩字
在32位机上,指针都是32为的地址符,char *p; p=0x8000是可以的,但是这也指向了一个32位的地址空间,
你可以printf(“%u”,p);打印一下p指向的地址,看一下里面都是32位的