int a = 20;
int *b = &a;
printf("%d %d %d \n",a,b,*b);// 输出的值是 20 (a的地址) 20 *b = &a;
void foo(int L){
L+=1;
}
foo(a);
printf("%d %d %d ",a,b,*b); // 因为是形参所以值没变 输出的值是 20 (a的地址) 20 *b = &a;
foo(*b);
printf("%d %d %d ",a,b,*b); 依旧没有变化。 因为 *b == a 他们的值是一样的。 20 (a的地址) 20
void foo(int *L){
L+=1;
}
foo(&a);
printf("%d %d %d ",a,b,*b); //因为 *L = &a 相当于 *L == a 依旧是形参。 20 (a的地址) 20
foo(b);
printf("%d %d %d ",a,b,*b); // 因为 int *L = b 相当于 L = b L存储的是b的地址 L +=1 相当于 L存储的
b的地址加1 本质上 不会有影响。 依旧 20 (a的地址) 20
void foo(int *L){
*L+=1;
}
foo(&a);
printf("%d %d %d ",a,b,*b);// int *L = &a; 相当于 *L == a 对指正*L 的操作会直接影响到 a 然而b 又指向a 所以同时影响 21 (a的地址) 21
foo(b);
printf("%d %d %d ",a,b,*b);// int *L = b 相当于 *L == a 所以和上面一样 21 (a的地址) 21