C语言的指针详解,单指针,双重指针(char *和char **)

最近在学习的过程中碰到了char **,突然发现关与指针的概念很模糊,所以温习了一下

  • char * 和char ** 之间的联系
    char *定义的式一个字符型指针
    char ** 定义的是一个双重指针
    让我困惑的也就是双重指针

下面的图解释一下

指针
变量地址
双重指针1
指针2地址
变量地址

a
b
对于定义的单指针变量" 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语言的过程中,如果又不懂的地方要学会实践验证,不要一股脑的看理论,老话说的号实践出真理

有关于双重指针的应用后期再进行记录。

如有错误欢迎指正,如造成困扰属实抱歉

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值