函数传递指针变量时,在函数体中可以通过访问传递过来的指针地址修改指针的内容。但是如果在函数体中定义一个同名的指针并修改他的内容是无法对原指针造成影响的。
例如:
#include <stdio.h>
void f (int* a);
int main () {
int p, t;
int *a, *b;
p = 1;
t = 2;
a = &p;
b = &t;
f (a);
printf("%d %d", *a, *b);
return 0;
}
void f (int* b){
*b = 5;
}
5 2
这样在函数体中对*b
赋值改变的还是指针a所指向的值,因为函数把a的地址传给了*b
void f ();
int main (){
int p = 1;
int *a;
a = &p;
f ();
printf("%d", *a);
return 0;
}
void f (){
int p = 5;
int *a;
a = &p;
}
1
在函数中定义的*a只是局部变量。