函數傳遞指針變量時,在函數體中可以通過訪問傳遞過來的指針地址修改指針的內容。但是如果在函數體中定義一個同名的指針並修改他的內容是無法對原指針造成影響的。
例如:
#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只是局部變量。