C语言指针类型及意义
C语言 类型 指针 意义
2023-09-11 14:21:43 时间
内存存放
1.内存是怎么编号的?
32位 32跟地址线 物理线 通电 1/0
64位
电信号转换成数字信息:1和0组成的二进制序列
2.一个这样的内存单元是多大空间?
最终:一个内存单元是一个字节,然后分配地址的
指针类型
C语言编译器对指针这个特殊的概念,有2个疑问?
1、分配一个盒子,盒子要多大?
在32bit系统中,指针就是4个字节,因为内存地址的范围是 0~232 ,即全0到全1,如果想要一个指针能随便指向这么多内存地址,就要占32个位,所以是4个字节
同理:
在64位系统中,cpu会通过地址总线在2^64个地址中寻找其中的某一个地址值的数据,所以8个字节的指针就可以代表内存中任意位置的一个地址值,所以指针占8个字节就足够用了
2、盒子里存放的地址 所指向 内存的读取方法是什么?
指针指向内存空间,一定要保证合法性
在一块int类型(4个字节)的内存空间中,用char * p去读,和用int * p去读,结果是不一样的,char*p只读出该地址的低地址开始的一个字节
指针类型的意义
1.指针类型决定了指针解引用的权限有多大
int类型就可以解引用访问4个字节,char类型解引用访问1个字节
2.指针类型决定了,指针走一步,能走多远(步长)
int类型指针加一,地址的跨度是4,char类型指针加一,地址的跨度是1