c语言指针怎么理解,啥时候会用到指针,要注意哪些方面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言指针怎么理解,啥时候会用到指针,要注意哪些方面相关的知识,希望对你有一定的参考价值。

请尽量通俗些,详细些,不要抄来的,因为我自学看书没理解。还有要注意哪些要点什么的。好的多给分

cpu自己有运算器和寄存器,通过总线与存储器件相连,在执行运算时,
需要将数据冲存储器件上面将参与运算的数据读入,运算完成后再送出到
存储区。那么cpu读入时需要访问存储器件的某个单元,需要指定这个单元
的编号,我们管这个编号叫存储地址。
比如:int a[10],*p; p=&a[3];a就是一个拥有10个整型数据的数据区
的首地址,变量p是存放地址的,称为指针型变量,赋值时需要取相应存储
区的地址,p=&a[3];就是取数组a的第4个单元的地址给p,那么p就拿到了
这个单元的地址,*p=5;就相当于a[3]=5;的操作,p++;后p指针就指向a[4]。
在操作大块数据时,一般记录首地址(数组指针),然后根据首地址再加
上偏移量来访问整个数据,在你程序中写a[3]时,计算机就会取a数组对应
的首地址再加3个整型偏移量来访问相应数据。用指针p访问a数组的好处
是,不用每次计算a加多少偏移访问数据,而是使p指向某数据后可以p++
或p--来访问前一个或后一个数据。
注意:
1.指针存放地址用,不是存储实际数据的,它是用来找数的,在
程序中要注意这点,往往出问题的是,指针还没有赋值就用来操作,或
用指针来存放数据,如:int *p=15,s[10]= 0,15,0 ;的
p指针赋值有问题,这样计算机会把15当成地址存放到p变量中,以后用
*p访问得到的数据就不是你想要的数据了。(应该类似:p=s+1; *p=15;)
2.指针访问数据区一般需要程序来控制不要越界,比如定义了10个单元
的数据区,你不能让指针超出这10个单元的范围,否则得到的数据就是
不靠谱的。
3.指针的定义只是开设了可以访问数据区或数组的变量,数据区和数组
需要你的程序另行开设,然后把数据区或数组的某个单元的地址赋值给
指针变量,不要认定义了能访问数组的指针,数组就定义好了。
4.指针存放的地址最好不要用来与其他地址比较,除非你能确认地址比
较的结果肯定是你想要的。
5.举例来说,int a[10],*p=a;中a和p都是指针(地址),但a和p是不同的
在编译器眼中,a是一个数据区的首地址,是一个标记,你程序中使用a
时,编译器会知道用数据区的首地址来替换操作,而p是你自己程序开
设的变量,可以在程序中操作比如p++; p=a;等,但作为记号的a就不能
在程序中操作了,如a++; a=p;就是错的了。
6.子程序如果参数是指针型的,这个参数由子程序开设的指针型临时
变量存储,这个临时变量可以进行操作,但不会返回给调用者的指针型
变量。
如:int a[10],*p; int f(int *s) s++; main() p=a; f(p);
s再怎么加减都不会影响p。
参考技术A 指针是按一定规律操作大量的变量时用的,你想象如果你有一个数组,你要操作数组中一个特定元素,但是这个元素的下标是个变量,那你就离指针不远了,实际上指针名就是一个真正的数组名,要想纯熟得理解和运用指针,最好看看数据结构的书 参考技术B c语言指针就是内存地址。既然是内存地址当然可以用它来访问内存。所以当你要对内存进行读、写或分配、释放的时候会用到。甚至可以用函数指针来访问函数。要注意的东西一时说不全,这个需要自己实践总结。 参考技术C 个人理解
指针就是地址,不过这个地址是有类型的,比如一个int型的指针,int指的是该指针指向的那块内存存放的内容是一个int型的数据。
或者也可以把指针的类型简单的看作是这个指针所能管到的内存的大小,如一个int类型的指针可以管4个字节,char类型的可以管1个字节。
参考技术D 就是数据的地址。 通过指针,可以向这个地址写入数据,或者读取数据。p是地址, *p就是地址的内容。追问

那哪些地方会用到指针呢

追答

变量或函数都是有地址的。所有用到地址的就有指针。数据指针,数组指针,动态分配的空间地址指针,函数指针,结构指针, 参数传递等等,可以说所有的地方都用到了指针。

指针都没搞懂,还怎么算的上 C++ 老司机?

最让C/C++初学者头疼的问题,绝对少不了下面这俩:

具体编程的时候,什么时候该调用函数?

什么地方需要用到共用体、指针等?

其实,我们在学校的时候也实践过这些知识点,比如期末考试让写个图书管理系统啥的,基本就会用上这些东西,但是这种程度距离能灵活运用还差得远。

函数、指针是C语言/C++开发中频繁使用的基础内容,未来找工作,这些基础是一定要及格的,如果无法熟练掌握、不懂具体的应用原理,平时写起代码来会非常吃力,想通过企业的面试也基本无望。尤其是指针这一块,一个野指针的杀伤力想必不用我多说……
自学能力强的,可以多去GitHub上看一些优秀的源码,看的过程中注意揣摩人家的用法,通过模仿-吸收-复盘-实践这样的链路来强化。

自学能力相对不是那么好或者效率低下的,我推荐花2小时学习下面这份视频课程——《共用体和指针精讲课程》。
指针都没搞懂,还怎么算的上 C++ 老司机?

这份视频课程原价599,现在本号粉丝可0元免费领取,不用转发不用分享,扫码就能领!

一次性搞懂指针和地址
原价599   限时免费报名
指针都没搞懂,还怎么算的上 C++ 老司机?
报名的前50位
再赠一套同等价值的视频课程

文末可查看


这个视频主要包含以下内容:

1-什么是共用体

2-共用体空间大小和元素访问方式

3-实现ip转整数功能

4-大端机&小端机

5-字节序

7-指针变量的介绍

8-指针变量的定义

9-指向指针的指针

10-指针变量类型的作用

该课程由海贼科技金牌讲师、哈尔滨理工大学计算机特邀讲师于方泽录制讲解,同时,于方泽还是C语言与算法数据结构学科创始人,对C语言/C++这一块的基础架构有丰富的教学教研经验,基础薄弱的朋友,非常适合跟着于方泽老师学习。
指针都没搞懂,还怎么算的上 C++ 老司机?

指针都没搞懂,还怎么算的上 C++ 老司机?金牌讲师于方泽

报名的前50位,还将赠送另一套视频资料——《C语言函数精讲课程》,同样是由于方泽老师讲解,主要内容是C语言函数知识,以及递归函数的设计实现过程,C语言函数这块学习吃力的人,这两个视频课程建议ALL in!

立刻扫码抢占,手慢无!

以上是关于c语言指针怎么理解,啥时候会用到指针,要注意哪些方面的主要内容,如果未能解决你的问题,请参考以下文章

c语言中const 是啥意思,怎么用,啥时候用?

C++为什么要学指针?

c语言中的指针应该怎么理解?

C语言里,啥时候用数组啥时候用指针和动态内存(malloc/calloc)?

C语言中文件指针指向啥?

指针初识