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

 

posted on 2016-10-25 20:14  HDU李少帅  阅读(201)  评论(0编辑  收藏  举报