一个函数传参和局部变量作用域有关问题
一个函数传参和局部变量作用域问题
如:
void fun1(int **p)
{
int a = 10;
*p = &a;
}
int main()
{
int *p = NULL;
fun1(&p);
printf("%i",*p);
}
能正确输出10,但是请问这样写安全吗?局部变量a不是在函数fun1结束的时候自动释放吗?
最近写c/c++的些许困惑,请高人解答。
------解决方案--------------------
这样的写法当然是不安全的,建议这样写:
如:
void fun1(int **p)
{
int a = 10;
*p = &a;
}
int main()
{
int *p = NULL;
fun1(&p);
printf("%i",*p);
}
能正确输出10,但是请问这样写安全吗?局部变量a不是在函数fun1结束的时候自动释放吗?
最近写c/c++的些许困惑,请高人解答。
------解决方案--------------------
这样的写法当然是不安全的,建议这样写:
- C/C++ code
#include <stdio.h> void fun1(int *p) { *p = 10; } int main() { int p; fun1(&p); printf("%d\n", p); return 0; }
------解决方案--------------------