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