下面有个小程序,输出结果是多少?
#include<stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int *p, **k;
p = a;
k = &p;
printf("%d",*(p++));
printf("%d",**k);
return 0;
}
输出结果应该为12;
分析:
p开始指的是1, 而k是二级指针,k的值是p的地址,p++后,p的地址改变了,所以为2
这里,如果没想明白,就容易认为,在k=&p的时候,k的值已经确定了。其实这里是错误的。
p的值是一个int型的地址,k的值是一个int*指针,**k就是int的值,现在改变了