上一节讲解了关于指针的指针, 这次我们来补充多一点点的小知识~~
下面我们来看一个小例子:
#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也不会跟着改变.
这次就到这里了, 下次我们继续