最近在学习的过程中碰到了char **,突然发现关与指针的概念很模糊,所以温习了一下
- char * 和char ** 之间的联系
char *定义的式一个字符型指针
char ** 定义的是一个双重指针
让我困惑的也就是双重指针
下面的图解释一下
对于定义的单指针变量" p1 "里的值是变量 " i “的地址,即 p1=&i。
" * " 是取值符,” p1 "代表的意思是取得 p1 指向的地址 (i的地址 ) &i 里的值 ,即p1=i。
" & "是取地址符。
下面着重分析双重指针:
1.从字面意思理解,双重指针的含义即指向指针的指针
2.图中定义的" p2 “就是一个双重指针,它是指向 *指针” p1"*的一个指针。
3.分析指针"p2"的含义
- &p2: 取得指针p2的地址为0x7ffc955d50c8
- *p2 : 取得指针p2指向的 地址的值(该地址的值就是指针p1的值),即是“ *p2=p1”
*p2即是p2中的值(p1的地址)地址单元存储的值即是i的地址
注意:*p2 代表拿到p2的地址单元里的内容即是p1地址——>再拿到p1地址单元里的值.(最终拿到i的地址而不是i地址单元中的内容)
- **p2: 相当于*p1的操作,取得指针p1指向的 地址的值(该地址就是i的地址),**p2=i,故输出
printf("%c",**p2);
为a。
总结
在学习c语言的过程中,如果又不懂的地方要学会实践验证,不要一股脑的看理论,老话说的号实践出真理
有关于双重指针的应用后期再进行记录。
如有错误欢迎指正,如造成困扰属实抱歉