C语言指针详解(通俗易懂)
【硬件电路设计零基础入门,4节精品课等着你!!!】
做个awesomeIT大咖
趁这个假期华丽变身,做夏日最靓的仔!
赶紧扫描下方二维码,参与信盈达【硬件电路设计训练营】
打卡一次,即可抱走专属于你的神秘大礼哦!
奔走相告,信盈达学习福利卷起来了

前言
刚开始接触C语言,对C语言中的指针有一点不能理解,接着还有一个"&"符号感觉两者有点接近和混淆。两者的定义如下:
&是取地址符号
*是定义指针变量,即指向内存单元的指针
指针是C/C++语言的特色,它允许程序员直接操纵内存,所以说C语言是一种高效的语言。很多语言屏蔽了编程人员直接操纵内存的权限去降低软件开发的难度。
&

& 符号的作用很清晰, &a就是取变量a的地址。
*

为什么只打印了一个值呢?刚开始学习不是很懂,回去查指针变量的定义,再加上网上查阅各种资料,定义说:*表示一个指针变量,指向内存单元,指向内存单元,应该就是地址吧,那么ip变量应该被赋值一个地址,前边说的 & 不就表示一个地址吗,试一下

定义变量时int* a;int* 表示取指针,在地址前加*表示这个地址的内容。
函数指针和指针函数
函数指针的定义:
returnType (*pointerName)(param list);
指针函数的定义:
returnType *pointerName(paramlist);
returnType 为函数返回值类型,pointerNmae 为指针名称,param list 为函数参数列表,函数指针赋值为函数地址。注意:( )的优先级高于*,第一个括号不能省略,如果写作returnType *pointerName(paramlist);就成了函数原型(指针函数),它表明函数的返回值类型为returnType *,返回值类型为1个指针。
调用函数直接调用就好了,为什么还要定义一个函数指针呢,才接触时很不理解,后了解到由于函数指针存储的是一个内存地址,在传参的时候传入一个地址比传入一个地址对应的函数名更高效,运算速度更快。
数组指针
数组是一种结构类型,在某种意义上来说数组名就是指针,可以转化为指向其实体的指针,指针则是变量,仅仅意味着数组的存放地址,数组名概念比较宽泛,也更加复杂,而指针仅仅代表数组的首地址

指向指针的指针

总结
&a表示a变量的地址,scanf("%d",&a)中&a就是将输入的值存入a变量的地址中
*ip定义一个指针变量ip,ip代表指针变量,赋值内容为地址(即指向变量的地址)
*ip表示值是地址的变量,访问的是ip地址内容
在数组中指针变量仅仅代表数组的首地址,数组名就数组的首地址

版权归原作者所有,如有侵权,请联系删除。
版权声明:本文为CSDN博主「小钢炮vv」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36754767/article/details/89429475