C语言指针理解

本文介绍了C语言中的指针概念,从变量的存储开始,探讨了指针的用途、功能和目的。通过示例解释了如何定义和赋值指针,以及如何理解int *p, int **p, int ***p等多级指针的含义。文章强调了指针在全局变量访问、节省空间和简化代码理解方面的作用,并鼓励学习者面对难点保持自信和积极心态。" 78137886,5827395,树莓派基础操作指南:GPIO与Linux命令,"['raspberry', 'Linux', '硬件接口', '系统监控', '编程']
摘要由CSDN通过智能技术生成

一、前言

在没有学到指针时,就一直听说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.对于人类读者非常不友好,全是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值