回 帖 发 新 帖 刷新版面

主题:求大侠 解释下运行过程

#include <stdio.h>
main()
{ int a[5]={2,4,6,8,10},*p,**k;
p=a;k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
}

回复列表 (共4个回复)

沙发

p是指向数组的指针  k是指向指针p的指针 也就是说k存放的p的地址 printf("%d",*(p++))输出数组的首个元素为2 由于p++ p的指向向后移动了一个单位 那printf("%d\n",**k)输出数组第二个元素4

板凳


**k
这怎么理解啊

3 楼

可以讲解详细点不

4 楼


**k二维指针,就是指向指针的指针。

*p是指针(自己有个地址&p),又存放一个变量地址(就是指向一个地址)
**k(自己也有个地址&k),又存放了一个指针的地址(就是指向一个指针地址这里这是指向&p)

我来回复

您尚未登录,请登录后再回复。点此登录或注册