2021-04-24

C语言指针
面对计算机编程语言的学习,我们应该抱着一个图书管理员的心态来看待他,我们学习者自身就是一个图书管理员,如何分配仅有的书架空间,放置好书,并且很好的给借阅者翻找就是我们的任务了。而电脑CPU就是图书借阅者。
变量从类型上可以分成数据变量,地址变量,复合变量,三种,那么变量是什么?这个问题一开始我也不明白,也看过很多案列,说是容器,说是门牌号,每种说法都有其深刻指出,但便于自身理解上,我觉的将其形容为书签更贴切,三种变量,即三种书签,数据变量的书签,是按空间对应不同种类的数据分,所占空间大小也不同,地址变量对应指针书签,是按存储单元地址来,所以指针大小与该地址上的空间内容数据大小无关,在一个就是复合变量:结构体。他是将前面两种变量进行组合,而且为了cpu读取效率,自身还有地址对其所以在空间上并不是连续的。
对比以上三种变量,可以发现地址变量其实是一个索引变量,它可以有效的管理其余两个,以及内存空间,这也就是C语言为甚中心是指针了,指针就是图书管理员管理所有图书,空间的利器。
指针是变量,一个存放地址的变量,当没有任何修饰时,可以随意游走,万物皆可之,但是指针也是由类型的,那就是按地址空间上存放的内容进行区分,除了这种分类,还有一种分类,就是固定大小的叫常量指针,也就是这个指针,像一个标签一样,自身带有一块空间大小的属性,比如数组名就是。还有指向函数的入口地址,函数指针【int (*p) fun()】。整个数组的指针【int (*p) [ 5 ]】.
指针的博大精深远不止上面几种,链表也是一种特殊的复合变量,只不过是用指针将其串起来了。链表每个节点都是一个复合变量,而且它可以自己在对上面申请内存进行,申请一个新节点,只要连进链表,他就不在由支配这个节点空间的权力,而将访问权力给头节点了,为了定义新节点的指针避免内存泄漏,每使用malloc之后就要将其free(p)这个节点。如果是单独一块空间,确实可以清空,一旦连接到链表,原来的指针就失去了控制权,或者说,这一条链表的头指针,代表了整条连接起来的空间标签。
指针与函数的关系,在我们学习中,总是不容易理解,函数调用之后,如果不返回加工过后的数据结果,为甚会失去对变量的改变,这个是因为函数调用,每次都是再代码区去运行,形参在没有调用时,不分配空间,只有实参才分配空间,所以只要是复制过去的,函数运行完后,赋值的数据自动消失,在栈区,如果想要保留结果,要么返回加工数据,要么地址传参,就是调用函数实参通过地址去改变出纳入的变量数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值