一个考察指针的小程序
下面有个小程序,输出结果是多少?
#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的值,现在改变了
每天早上叫醒你的不是闹钟,而是心中的梦~