1、 通过指针参数传递访问局部变量
此种方法是最安全、最常见的访问局部变量的方式。通过函数参数将局部变量的地址传递给另一个函数,从而允许该函数访问和修改它。
#include <stdio.h>
void modifyVariable(int *ptr) {
*ptr = 20; // 修改指针指向的值
}
int main() {
int x = 10;
printf("Before: x = %d\n", x);
modifyVariable(&x); // 传递 x 的地址
printf("After: x = %d\n", x); // 现在 x 的值已经被修改为 20
return 0;
}
2、使用全局变量
全局变量是定义在所有函数之外的变量,生命周期贯穿程序的整个运行时,可以在多个函数中共享。
#include <stdio.h>
int globalVar = 10; // 全局变量
void modifyGlobal() {
globalVar = 20; // 修改全局变量
}
int main() {
printf("Before: globalVar = %d\n", globalVar);
modifyGlobal(); // 修改全局变量
printf("After: globalVar = %d\n", globalVar); // globalVar 的值已经被修改为 20
return 0;
}
3、 使用静态局部变量
如需保留局部变量的值,并让它在函数间保持状态,可以将局部变量声明为 static。静态局部变量在程序的整个生命周期中存在,但它的作用域只限于定义它的函数。
#include <stdio.h>
void modifyStatic() {
static int staticVar = 10; // 静态局部变量
staticVar++;
printf("staticVar = %d\n", staticVar);
}
int main() {
modifyStatic(); // 输出 11
modifyStatic(); // 输出 12
modifyStatic(); // 输出 13
return 0;
}
注意:局部变量的作用域仅限于定义它的函数。一旦函数执行完毕,局部变量就会被销毁。因此,直接访问另一个函数的局部变量是不可能的,必须通过指针或全局变量的方式进行共享。局部变量的地址在函数返回后会变得无效,因为该内存可能会被其他代码覆盖。如果你返回局部变量的地址并在别处使用它,会导致未定