首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个函数传参和局部变量作用域有关问题

2012-10-27 
一个函数传参和局部变量作用域问题如:void fun1(int **p){int a 10*p &a}int main(){int *p NULL

一个函数传参和局部变量作用域问题
如:
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;}
[解决办法]
探讨

引用:

这样的写法当然是不安全的,建议这样写:



那请问那成功输出10是偶然的吗?还是内存还没来得及释放的原因?

热点排行