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
", 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
", &i);
    printf("p = %p
", p);
    
    p = NULL;
    
    printf("p = %p
", p);
    
    return 0;
}

输出结果:



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


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

原文地址:https://www.cnblogs.com/iOSCain/p/4282891.html