关于指针变量的问题

关于指针变量的问题

  • 在32bit的操作系统中,所有类型的指针变量都是4bytes. [因为地址为4bytes]

这是第一个结论  

  • 不同类型的指针变量,对C语言中的同一块内存进行读取的时候,每次读取的字节数

    不同。(读取为指针变量 + *,剩下数据类型的大小),具体如下:

然后到第二个结论这里我就不清楚了  

int a = 0x12345678;  (ubuntu默认小端模式)

   

低地址

0xdff00                0x78 

0xdff01                0x56

0xdff02                0x34 

0xdff03                0x12

高地址


 char *p = (char *)&a;

 short *q = (short *)&a;

 int *m = &a; 

 

 *p; //读取变量a的1bytes数据

 *q; //读取变量a的2bytes数据

 *m; //读取变量a的4bytes数据
 
 
 

指针变量  所有类型的指针变量都是4bytes也就是说p=q=m(大小)
 为什么他们装数据有的读的多有的读的少 ?不是指针变量大小一样么
 
 我感觉第一个结论和第二个结论冲突了
 
 如果读取是按照数据类型大小读的话  意思是指针类型容量是4字节,只能读数据类型大小的字节么  就跟电池虚标电量一样   


 定义死记住了 就是逻辑不理解

正在回答

登陆购买课程后可参与讨论,去登陆

2回答
设计的是这样的,变量类型本身就暗含字节长度信息;
山行老师 2023-02-22 10:35:42
1.两个结论都是对的;
2.不存在指针容量这一说法,你说的p=q=m只是说指针变量都指向内存里面0xdff00这个字节;
3.第二个结论说明了不同类型的指针可以指向同一个位置0xdff00,这时指针的类型就决定了这个指针从0xdff00开始访问几个字节;
  • 提问者 Cc大佬 #1

    那不是所有类型的指针变量都是4bytes么    怎么有的类型访问的多   有的类型访问的少呢

    2023-02-22 10:41:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师