社区
C++ 语言
帖子详情
关于变量生存期的问题
hpd115
2009-04-21 10:11:40
void test()
{
for( int i=0; ; )
{
A1
}
A2
}
写得可能有点简单,大家凑合看下
这个变量i在A1里肯定有效,但当for结束后,i还能在A2里用么????
是不是这个跟编译器有关?
...全文
78
6
打赏
收藏
关于变量生存期的问题
void test() { for( int i=0; ; ) { A1 } A2 } 写得可能有点简单,大家凑合看下 这个变量i在A1里肯定有效,但当for结束后,i还能在A2里用么???? 是不是这个跟编译器有关?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZXW0521
2009-04-21
打赏
举报
回复
[Quote=引用 4 楼 hairetz 的回复:]
跟编译器有关,试过
for(inti;;;)
for(int i;;;)
这样有的会重定义.
[/Quote]
这个在vc6是有问题的,
是不是定义在大括号里面的也有问题阿,
ZXW0521
2009-04-21
打赏
举报
回复
应该不能,A1只能在FOR语句中使用,
和编译器没有关系
猫已经找不回了
2009-04-21
打赏
举报
回复
跟编译器有关,试过
for(inti;;;)
for(int i;;;)
这样有的会重定义.
baiwei156
2009-04-21
打赏
举报
回复
和编译器有关的。。。
在vc9下是在A2里不可以用的
但我看过别人写的vc6代码
好像是可以的
Jinhao
2009-04-21
打赏
举报
回复
不能用,但是VC6下可以用,这不是C++的规则
coverallwangp
2009-04-21
打赏
举报
回复
不能
变量
生存期
的
问题
#include using namespace std;char *getm(void){ char p[] = "csdn"; return p;}void test(void){ char *str = NULL; str = getm(); cout}int main(void){ test(); return 0;}程序运行结果不是:csdn,而是乱码,这是因
static
变量
的
生存期
问题
static
变量
的
生存期
问题
static
变量
是指静态的
变量
,不管是在全局还是局部声明的静态
变量
都存放于程序的全局
变量
区域,所以它的生命周期是从程序开始到到程序结束。但是在C和C++中,其初始化时机又有区别,具体结论如下: C 全局
变量
文件域的静态
变量
静态局部
变量
初始化 编译期初始化 编译期初始化 编译期初始化 一些细节: 因为C语言的静态
变量
都是在编译阶段分配好内存之后就会进行初始化。所以,C语言之中无法使用
变量
对静态
变量
进行初始化,即以下写法是无法编译通过的: int a
关于C
变量
作用域和
生存期
的常见
问题
作用域 作用域描述了程序中可以访问一个标识符的一个或多个区域,一个C
变量
的作用域可以是代码块作用域、函数原型作用域,或者文件作用域。代码块是包含在一对花括号内的一 段代码,在代码块中定义的
变量
具有代码块作用域,从该
变量
被定义的地方到包含该定义的代码块的末尾该
变量
均可见,但只局限于代码块。因此,函数作用域也属于代码块作 用域。 一个在所有函数之外定义的
变量
具有文件作用域,从定义开始到包含该文
小叙Java
变量
的作用域和
生存期
问题
到目前为止,我们使用的所有
变量
都是在方法main() 的后面被声明。然而,Java 允许
变量
在任何程序块内被声明。在前面就了解了,程序块被包括在一对大括号中。一个程序块定义了一个作用域(scope )。这样,你每次开始一个新块,你就创建了一个新的作用域。你可能从先前的编程经验知道,一个作用域决定了哪些对象对程序的其他部分是可见的,它也决定了这些对象的
生存期
。 大多数其他计算机...
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章