大冶资讯网

初识指针 当前关注

2023-05-10 22:42:16 来源:博客园

指针:就是地址,是由解引用操作符来找到所想要的对象,

指针变量:是用来存放别人的地址的

内存是怎么编号的?


(资料图)

一般计算机是32位或者64位,例:32位的计算机是有32根地址线而地址是物理线是可以通电的,正电就是1,负电就是0,而这些线全部通电有些电是正的有些是负的,而这些电就会产生电信号,

电信号就会转换成数字信息:1和0组成的二进制序列

而32根二进制序列信号会产生可能性

00000000000000000000000000000000

0111111111111111111111111111111111111111

1000000000000000000000000000000

11111111111111111111111111111111111111111把这样的二进制序列就是内存的编号,二进制序列有2的32次方个,这些二进制序列都可以作为内存的编号,当这些二进制序列当成编号,这些编号就称为内存单元的地址

一个这样的内存单位给多大的空间呢?

假设一个内存单元是1bit

2的32次方是100000000000000000000000000000000换成bit就是

c语言中最小的char类型而char是1byte(字节)-8bit(比特位)-8个地址,如果一个地址是1个bit的话太浪费太细了,而最终的一个内存单位是1个字节的话就比较合适,1个字节给1个地址

a在内存中要分配空间-4个字节

%p是专门用来打印地址的

&a:取a的地址,不会哪全部地址,只会拿4个字节的第一个字节的地址

pa是用来存放地址的,在c语言中pa叫指针变量

*是说明pa是指针变量的

int是说明pa执行的类型对象是int类型

这里的a的值是10,*pa是通过pa里面的存放的a的地址找到a,而*pa可以间接改变a的值

*:解引用操作(*是单目操作符)

指针变量的大小

为什么全部类型打印出来的大小大都是一样的呢?

指针的类型大小都是一样的,因为指针式用来存放地址的,指针需要多大空间,取决于地址存储需要多大空间

32位的平台打印出来的是32bit也就是4个byte

64位的电平台打印出来的数63bit也就是8个byte

关键词:

热门推荐