当前位置: 首页 > news >正文

c语言指针怎么理解 第二部分

第四,指针有啥用。

 

比方说,我们有个函数,如下:

 

int add(int x){

 

return (x+1); //把输入的值加1并返回结果。

 

}

好了,应用的时候是这样的:

 

{

 

int a=1;

 

a=add(a); //add函数返回的是a+1

 

//现在 a等于2

 

}

 

很简单吧,就是把a都累加一次。

 

用指针怎么写:

 

void add(int *y){ //给入的是一个int指针,是一个地址。

 

*y = *y + 1; //* 是指引用 这个地址所保存的变量

 

//这条语句的意思就是,把这个地址里的值加1,然后放回这个地址。

 

}

 

把这个函数用起来:

 

{

 

int a=1;

 

add(&a); //把a的地址传到函数里

 

//add函数,就是把a的值加1,再放回到变量a里。

 

//现在a等于2

 

}

 

试想一下,如果我们要对一个数据结构里的数据进行处理,那是不是就该传入这个结构的地址,在函数中依靠指针来引用这个地址的数据结构,进行运算。

 

第五,若已有一个指针变量,可不可以用另外一个指针来保存这个变量的地址呢。

 

可以的。

 

一个变量保存另一个指针的地址,那它就是通常所说是“指针的指针”了。

 

通常,指针的指针多用做(或指的是)函数指针或数据结构中有指针的情况。初学者搞不清,就不要勉强了。

 

第六,空指针可怕吗?

 

我们知道,一个变量要赋值后才能用,指针也是一样。指针不赋值(不给定地址)就拿来用,是不是也要出错。这个就是空指针。一般把指针赋值为Null,就是表明这个指针是空的,不能用。所以程序中一定要经常判别指针不是Null才能用。

 

最后,初学C语言,最好把复合的语句拆开来看,比较容易理解。像 int *a=&b; 这种,拆成

 

int * a;

 

a=&b;

 

就好理解了。

 

 

 

上面所说的,是指针比较基础的东西,希望能帮助初学者学习理清思路。

703a768503c1432fb3d478ec28712391.png

今日学习寄语:

 1、要么做第一个,要么做最好的一个。

2、信念和目标,必须永远洋溢在程序员内心。3、最累的时候,家人是你最好的归宿。

4、C程序员永远不会灭亡。他们只是cast成了void。

5、真正的程序员认为自己比用户更明白用户需要什么。

6、退一步海阔天空,这是一种应有的心境。

7、过去的代码都是未经测试的代码。

8、优秀的判断力来自经验,但经验来自于错误的判断。

9、测试是来表明bug的存在而不是不存在。

10、我们这个世界的一个问题是,蠢人信誓旦旦,智人满腹狐疑。

11、一个好汉三个帮,程序员同样如此。

12、看再多的书是学不全脚本的,要多实践。13、无私奉献不是天方夜谭,有时候,我们也可以做到。

14、世界上只有两句真理:1、人一定会死。2、程序一定有Bug。

15、UNIX很简单。但需要有一定天赋的人才能理解这种简单。

16、程序中蕴含着很多的道理,唯有大彻大悟者方能体会其中的奥妙。

17、编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲。

18、做技术一定要一颗恒心,这样才不会半途而废。

19、不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

20、请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件。

http://www.lryc.cn/news/26733.html

相关文章:

  • GC简介和监控调优
  • Understanding The Linux Kernel --- Part2 Memory Addressing
  • 前后端分页查询好大的一个坑(已解决)
  • Python批量执行读取ini文件和写入ini文件时,性能比较低怎么办,给出解决方案和源码
  • 微机原理与接口技术 汇编语言程序设计DOS常用命令
  • 4.ffmpeg命令转码规则、过滤器介绍、手动流map选项
  • 【python】标准库详解
  • Golang Map原理(底层结构、查找/新增/删除、扩缩容)
  • Java_数组
  • list与vector的区别
  • 【C++、数据结构】位图、布隆过滤器、哈希切割(哈希思想的应用)
  • 计算机网络安全基础知识3:网站漏洞,安装phpstudy,安装靶场漏洞DVWA,搭建一个网站
  • 大话数据结构-迪杰斯特拉算法(Dijkstra)和弗洛伊德算法(Floyd)
  • 2023年全国最新食品安全管理员精选真题及答案10
  • Unity常见面试题详解(持续更新...)
  • java高级篇之三大性质总结:原子性、可见性以及有序性
  • 真涨脸,我用 Python 为朋友自动化整理表格
  • MySQL学习笔记(1.操作数据库与数据的SQL)
  • C++——特殊类设计
  • Scratch少儿编程案例-植物大战僵尸-趣味角色版
  • Vue的路由守卫
  • 【算法】151. 反转字符串中的单词
  • Azure AI基础到实战(C#2022)-认知服务(2)
  • 并发就一定快吗?答:肯定不是啊
  • 前端的学习路线和方法
  • 用C语言写一个自己的shell-Part Ⅱ--execute commands
  • 案例实践|运营腾讯游戏,Proxima Beta 使用 Apache Pulsar 升级团队协作与数据治理...
  • Hudi的7种索引
  • Linux内核(十三)系统软中断 software
  • Linux -- 查看进程 PS 命令 详解