C语言指针类型及意义

内存存放

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

你可能感兴趣的:(C语言,c语言)