发布时间:2023-10-18 15:30
在没有学到指针时,就一直听说C语言一大难点就是指针,终于在学到了指针这一节的时候,便花了更多时间思考这个难关到底是怎么回事。
以下理解并非权威,仅是个人理解作交流,
第一次写文章,如果写的云里雾里而且错误百出的话,轻喷。
int a;
a = 1;
这里定义且赋值了一个变量a
定义了一个int类型的变量a就意味着要在内存中腾出一个int大小(4个字节)的空间,当然这个空间是有地址的,假设这个地址是0001到0004(4个字节的空间),当然不管是计算机还是人,要定位到这四个字节的空间,只需要知道该空间的第一个字节的地址就够了(根据定义的整型类型,就知道往后多少个字节的空间还是在储存这个数据),于是在这里就直接用0001代表int a的地址了。
定义一个int变量只是让计算机预先腾出一个int大小的空间,这个空间被命名为变量a,而给这个变量赋值则是在该空间存入一个数据,在上面的例子是存入了1(在8位计算机眼里可能是00000000 00000000 00000000 00000001,每8位一个字节,总共4个字节,这样看来,用int类型来储存1这么小的数真是浪费了四分之三的空间。注意:0001是地址,储存了前8个0,0002和0003分别储存了第二个8个0和第三个8个0,0004则是储存了00000001的那个地址)。
对于计算机而言,只需要地址和数据就足够了,将地址0001和计算机储存的数据1(那个好多0的32位数)一一对应起来,那么在要使用这个数据的时候,就直接去这个地址找这个数据就行了。那么这样的话,程序可能就张这样了:
0001 = 00000000000000000000000000000001;
//前面是地址,后面是值
//地址 = 值;