相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神!
好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了!
一说指针,第一反应,指针是一种数据类型。
c语言学习,重点就是两个,一个是数据的数据类型,一个就是程序的结构。
整个C语言学习体系,在初学阶段就接触基本数据类型,整形实型字符型;然后是三大基本结构顺序循环分支,随后的内容几乎都是对数据类型的扩充结构体 指针 链表 数组……
那么数据类型是什么?
数据类型就表示它能够存储什么类型的数据,整型有什么用呢?我在什么情况下需要使用一个int x呢?简单,你想获取一个存储单元,用于存储一个整型数据;同理,你定义一个实型是为了获取一个范围那么大,精度那么多的一个实型变量。
那么指针是一种什么类型的变量呢?什么情况下我需要定义一个指针,我要用这个指针存储什么样子的数据?
只要有数据类型,就要想:这种类型怎么定义,这种数据类型存储什么形式的数据。
指针,用于保存某个单元的地址,你只要想存储某个单元的地址,你就需要定义一个指针,接着,你存一个地址的目的是什么?是要对一个单元进行间接访问。
访问单元的方式就是两种:直接访问和间接访问。
直接访问就是直接使用变量名,系统就会找到这个变量所在的单元,对他进行或读或写操作。
只要你在表达式使用了变量名,系统就会通过名字找到他所在的单元,找到做什么?或读或写,到底是读还是写,取决于变量名所在的位置,如果出现在赋值号左边,就是写入一个值,如果是打印到屏幕上,就是进行读。
对于间接访问,先要定义一个指针,然后用这个指针指向你想要访问的单元,在指针变量名前面加一个*术语叫做间接运算符,可以把指针指向的内容表示出来。
为什么要使用间接访问?
使用变量名直接访问单元,它不香吗?为什么要引入间接访问,使用间接访问有好处吗?间接访问不是自己给自己找别扭吗?
不是!间接访问有非常重要的作用,主要体现在几个方面:
(1)为了在函数中改变主调函数的存储单元,没有间接访问你就不可能实现.
(2)使用间接访问为了动态分配存储单元,从而对单元进行操作,并且在此基础上实现链式存储结构,也就是链表.
(3)为了能够动态分配存储单元,并在此基础上实现动态数组。之前,定义变量,数组是静态数组获得10个存储空间,而数组一旦分配好存储空间,长度就不能变化。但是动态数组不一样,当满了以后可以扩充空间。
(4)通过指针访问一段连续的存储空间
如果使用直接访问,使用变量名就只能访问我单元本身,而使用间接操作有了指针,p指向一个单元,不仅可以通过*p把当前指针指向的单元间接表示,还可以通过指针的移动把存储空间前后任意的存储单元表示出来。
可以说,指针是C语言的灵魂。一个人的C语言基础好不好,很大一部分都看他对于指针的理解程度有多深。所以希望同学们可以对指针的内容反复研习,反复实践。
感谢阅读,学习使人强大。
如果你想更好的提升你的编程能力,成为一个强大的C/C++程序员!不妨和一些志同道合的小伙伴一起学习成长!
C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地
有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!