关于指针变量的问题

来源:1-5 一级指针简介

Cc大佬

2023-02-21 22:23:49

  • 在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-24

设计的是这样的,变量类型本身就暗含字节长度信息;
1

山行老师

2023-02-22

1.两个结论都是对的;
2.不存在指针容量这一说法,你说的p=q=m只是说指针变量都指向内存里面0xdff00这个字节;
3.第二个结论说明了不同类型的指针可以指向同一个位置0xdff00,这时指针的类型就决定了这个指针从0xdff00开始访问几个字节;
1
hc大佬
hp>那不是所有类型的指针变量都是4bytes么    怎么有的类型访问的多   有的类型访问的少呢

h023-02-22
共1条回复

物联网/嵌入式工程师

面向零基础保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

394 学习 · 1207 问题

查看课程