指针的数据类型为什么要跟所指向的数据的类型一致,不是说所有的指针变量占用的内存大小是相同的吗??
6个回答
展开全部
指针变量所需要的存储空间的确是相同的。它都需要最高字长的存储空间。
但在指针指向不同类型的数据类型空间时,指针操作是不同的,见下示例代码:
unsigned char * ptrChar;
unsigned int * ptrInt;
ptrChar=(unsigned char *)0x0000;
ptrInt=(unsigned int *)0x0000;
ptrChar++;
ptrInt++;
最后两个指针++操作,看代码都是用的加加操作符,但实际上,指向无符号char型数据的指针,在加加操作后,ptrChar中的值是0x0001,因为每个无符号char只占用一个字节,而ptrInt在加加操作后,其值是0x0004,因为每个整型占用4个字节。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
所有指针 都是占用4个字节这个是没错
但是为什么不能用呢?给你举个例子。
int a = 0x00000FFF;
char *p = &a;
printf("%d\n", *p);
结果是255。也就是说 每一个类型的指针所取的bit长度不一样!char类型占用8bit, int 32bit,short 16bit。
上边这个例子不好
由于 是有符号的 所以255 打出来是-1
改一下
int a = 0x00000F0F;
这样的话就是15了
但是为什么不能用呢?给你举个例子。
int a = 0x00000FFF;
char *p = &a;
printf("%d\n", *p);
结果是255。也就是说 每一个类型的指针所取的bit长度不一样!char类型占用8bit, int 32bit,short 16bit。
上边这个例子不好
由于 是有符号的 所以255 打出来是-1
改一下
int a = 0x00000F0F;
这样的话就是15了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是C语言的语法要求,因为不同类型的指针,在作+-运算时,它的步长是不一样的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-05-09
展开全部
你是什么指针?很多语言都有指针的。
指针存储的是数据的首地址,它指向和它同一类型的数据。跟占用多少空间没关系。用int型指向int型,double指向double型,等等。如果不匹配会发生错误。
指针存储的是数据的首地址,它指向和它同一类型的数据。跟占用多少空间没关系。用int型指向int型,double指向double型,等等。如果不匹配会发生错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询