一个考察指针的小程序

下面有个小程序,输出结果是多少?

#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的值,现在改变了



posted @ 2014-09-13 23:56  海滨银枪小霸王  阅读(144)  评论(0编辑  收藏  举报