指针专题
文章目录
场景一
解
场景二
void f(int* t) {
static int d = 5;
t = &d;
}
int main() {
int* ip;
f(ip);
printf("%d\n", *ip);
return 0;
}
解
// 参数传入的是一个指针副本 —— 一份隐性的同名指针拷贝
// 方法一 —— 返回指针副本
int* f(int* ip) {
static int dum = 5;
ip = &dum;
printf("%d\n", *ip);
return ip;
}
int main() {
int* ip;
f(ip);
printf("%d\n", *ip); // 原地址存储值
printf("%d\n", *f(ip)); // 返回新地址的目标值
return 0;
}
// 方法二 —— 传入指针的地址
void f(int** ip) {
static int dum = 5;
*ip = &dum;
}
int main() {
int* ip;
f(&ip);
printf("%d\n", *ip);
return 0;
}