C语言指针理解

发布时间:2023-10-18 15:30

一、前言

在没有学到指针时,就一直听说C语言一大难点就是指针,终于在学到了指针这一节的时候,便花了更多时间思考这个难关到底是怎么回事。
以下理解并非权威,仅是个人理解作交流,
第一次写文章,如果写的云里雾里而且错误百出的话,轻喷。


二、理解变量的储存

int a;
a = 1;
这里定义且赋值了一个变量a

2.1 定义了一个变量

定义了一个int类型的变量a就意味着要在内存中腾出一个int大小(4个字节)的空间,当然这个空间是有地址的,假设这个地址是0001到0004(4个字节的空间),当然不管是计算机还是人,要定位到这四个字节的空间,只需要知道该空间的第一个字节的地址就够了(根据定义的整型类型,就知道往后多少个字节的空间还是在储存这个数据),于是在这里就直接用0001代表int a的地址了。

2.2 赋值了一个变量

定义一个int变量只是让计算机预先腾出一个int大小的空间,这个空间被命名为变量a,而给这个变量赋值则是在该空间存入一个数据,在上面的例子是存入了1(在8位计算机眼里可能是00000000 00000000 00000000 00000001,每8位一个字节,总共4个字节,这样看来,用int类型来储存1这么小的数真是浪费了四分之三的空间。注意:0001是地址,储存了前8个0,0002和0003分别储存了第二个8个0和第三个8个0,0004则是储存了00000001的那个地址)。

2.3 变量a的意义

对于计算机而言,只需要地址和数据就足够了,将地址0001和计算机储存的数据1(那个好多0的32位数)一一对应起来,那么在要使用这个数据的时候,就直接去这个地址找这个数据就行了。那么这样的话,程序可能就张这样了:

0001 = 00000000000000000000000000000001;
//前面是地址,后面是值
//地址 = 值;

这样做至少有两个不好:

  • 1.对于人类读者非常不友好,全是数字,人都要看晕去,就一行还好,多了真的顶不住的。
  • 2.地址用数字表示,值也用数字表示,很容易混淆

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号