内存,指针

1.在你的32位电脑中,有32根地址线(实物),当给这32根地址线通电时,有高电频(1)、低电频(0),这32根地址线通电后会将电信号转换为数字信号,所有二进制序列的可能性便有2^32种。内存的最小单元是字节(byte),由此可见内存共有2^32个字节的空间,即4GB。

 2.而地址是什么呢?计算机中的内存单元都有自己的编号,这些编号就是地址(C语言中的指针)。

int a=10;

变量的创建需要向内存中申请空间,上面的代码本质上其实是向内存申请4个字节的空间。

int* p=&a;

变量a占用4个字节的内存空间,但是&a的结果是什么呢?我们创建指针变量p来接受a的地址,当我们&a时,拿到的是四个字节中第一个字节的地址。

3.学习指针有什么用?这就好比你知道了别人的地址,你可以通过地址找到那个人。C语言中也一样,上面创建的指针变量p存放的就是变量a的地址,我们用解引用操作符 * 就可以通过地址找到变量a中存放的10.

printf("%d",*p);

通过解引用指针变量(*p)就可以找到变量a中存放的内容。这段代码便可以输出10。

4.指针变量的大小是几个字节呢?

  1.中说过,内存的最小单元是字节,所以可以说地址的存储需要多大空间,指针变量的大小就是几个字节。而地址是什么呢?计算机中的内存单元都有自己的编号,这些编号就是地址。每种编号就是32位二进制的序列,即4字节。可以得出结论,在32位机器上指针变量的大小是4字节,64位机器上是8字节。

猜你喜欢

转载自blog.csdn.net/2301_76144863/article/details/128583453