变量的范围.内部工作基础
这是关于变量假设范围的一个非常基本的问题.我有一个fiollowing代码:
int main() { int *p; p=func(); printf("%d",*p); return 0; } int *func() { int i; i=5; return &i; } 我的问题 > i的范围在func()中完成,但是,因为我将返回i的地址,我将能够在main()中访问和print5吗? 解决方法
变量的范围是可以访问它的区域.
变量的生命周期是保证变量存在的时间. 在你的情况下,我的生命在不超出它的功能范围内.这意味着我不能保证在功能之外存在.它不是必需的,并且它是未定义的行为来访问函数之外的局部变量.
你可能会,但它是未定义的行为.所以不要这样做.
编译器可以将它选择的任何内容放在该位置,一旦函数返回,地址位置就会保存一个Indeterminate值.
i是一个自动/局部变量,一旦声明它们的作用域{,}结束,所有自动变量都会被释放.因此名称自动. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |