C语言基础:C语言指针(4) - 补充一点关于指针的小知识

上一节讲解了关于指针的指针, 这次我们来补充多一点点的小知识~~


下面我们来看一个小例子:

#include <stdio.h>
int main()
{
    double d = 10.5;
    double d2 = 10.5;
    
    double *p;
    
    p = &d;
    p = &d2;
    
    *p = 10.9;
    
    printf("d=%f, d2=%f\n", d, d2);
    return 0;
}

输出的结果:




当第一句代码执行完之后, 那么p就指向于d, 也就是说p存的就是d的地址.

p = &d;


当第二句代码执行完后, 那么p就指向于d2, 也就是说p存的就是d2的地址, 而这时候的p与d也就是没有关系了.

p = &d2;


所以当最后一句代码, 所改变的其实就是d2的值, 而d还是原来的值, 所以输出的结果就和图上一样.

p = 10.9;


下面继续来一个例子:

#include <stdio.h>

int main()
{
    int i = 10;
    
    int *p;
    
    p = &i;
    
    printf("i = %p\n", &i);
    printf("p = %p\n", p);
    
    p = NULL;
    
    printf("p = %p\n", p);
    
    return 0;
}

输出结果:



当执行完代码后, p存的就是i的地址, 所以输出i和p的地址是相同的, 也就是说p存的就是i的地址, 而执行完最后一句的时候, 那么p的地址就是等于0, 也就说p与i没有关系, 改变了p的值i也不会跟着改变.


这次就到这里了, 下次我们继续

posted @ 2015-01-06 14:39  背着吉他去流浪  阅读(139)  评论(0编辑  收藏  举报