如何理解C语言中的指针?

大多数人对指针不理解,不是你的问题,是教你的人或所学书籍对你的误导;

你向他人请教指针问题时,得到的答案往往是:指针是一个指向某某的,这就是在误导你,给你在学C语言的道路上挖坑,一定要小心指向这两个字。

指针常用于存储一个地址,这个地址中的数据类型在定义指针变量时已经确定好了。

比如,

int x;//定义int类型的变量x

int *y;//定义指针变量y,用于存储某个地址,地址中保存的数据类型就是int类型

变量可以直接进行赋值,同理,指针变量一样也是可以。只不过,不会给指针变量直接赋值某个数值,而是将某个变量的地址直接赋值给这个指针,或者其它指针的值赋值给这个指针。

根据上面的例子:

y=&x;//将变量x的地址赋值给变量y

int *k;//定义一个新的指针k

k=y;//将变量y赋值给k

这里的y是指针,y所指向的值是x的地址,在将y赋值给k,k的值与y一样,都是指向x的地址。

那么指针变量y和k保存的地址值是可以改变的,也可以进行运算或重新进行赋值。

那么问题来了,指针有啥作用呢?

比如,现在有这样一个函数,如下图所示:

当调用这个函数时,如下图所示:

非常简单的一个例子,就是将a的值累加一次。

现在将上面这个例子使用指针进行改写,如下图所示:

对这个函数进行调用

当需要对某个数据结构中的数据进行处理时,只需要传入这个数据结构的地址,在使用指针来指向这个数据结构的地址,进行某些计算。

在给指针赋值时,一定要注意空指针。一个变量要进行使用,必须对其进行赋值,指针也不例外,如果不给指针进行赋值,直接进行使用,会出现空指针错误,在很多程序中,在使用指针之前,都会判断这个指针是否是NULL。

我上面所说的指针,属于比较基础的,有助于你理解指针的概念;在学习C语言时,最好将那些复杂的语句拆开来学习,这样有助于你进行理解。

相关推荐
gCode Teacher 格码致知5 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工5 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留5 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu6 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
quaer7 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
益莱储中国7 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc8 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu8 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger9 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc