指针的数据类型为什么要跟所指向的数据的类型一致,不是说所有的指针变量占用的内存大小是相同的吗??

 我来答
百度网友5803c9a
2011-05-09 · TA获得超过2162个赞
知道小有建树答主
回答量:891
采纳率:0%
帮助的人:1232万
展开全部
所有的指针变量占用的内存大小是相同的,这个内存中保存的不是数据的值,而是指针的值,指针的值是一个内存地址,也就是指针指向数据的首地址,根据这个地址只能得到指针指向数据的开始位置,并不知道这是什么类型的数据,所以指针的类型就决定了数据的类型
wooden954
2015-08-24 · TA获得超过1万个赞
知道大有可为答主
回答量:6135
采纳率:93%
帮助的人:821万
展开全部

指针变量所需要的存储空间的确是相同的。它都需要最高字长的存储空间。

但在指针指向不同类型的数据类型空间时,指针操作是不同的,见下示例代码:

unsigned char * ptrChar;
unsigned int  * ptrInt;
ptrChar=(unsigned char *)0x0000;
ptrInt=(unsigned int *)0x0000;
ptrChar++;
ptrInt++;

最后两个指针++操作,看代码都是用的加加操作符,但实际上,指向无符号char型数据的指针,在加加操作后,ptrChar中的值是0x0001,因为每个无符号char只占用一个字节,而ptrInt在加加操作后,其值是0x0004,因为每个整型占用4个字节。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a3722676e
2011-05-09 · TA获得超过1215个赞
知道小有建树答主
回答量:957
采纳率:0%
帮助的人:864万
展开全部
所有指针 都是占用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了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
琴秀曼Bp
2011-05-09 · TA获得超过690个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:665万
展开全部
这是C语言的语法要求,因为不同类型的指针,在作+-运算时,它的步长是不一样的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-05-09
展开全部
你是什么指针?很多语言都有指针的。
指针存储的是数据的首地址,它指向和它同一类型的数据。跟占用多少空间没关系。用int型指向int型,double指向double型,等等。如果不匹配会发生错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式