VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2934|回复: 13

一个简单C语言问题

[复制链接]

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-10-9 14:00:02 | 显示全部楼层 |阅读模式
for (int i=0;i<=10;i++)
int s=0;
请问第二次循环的时候原来第一次的空间有没有被释放





回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-10-9 16:45:02 | 显示全部楼层
这个东西你是不是可以调试一下,看看执行过程就知道了,VC或者Dev-cpp等编译环境都有这个功能的。
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-10-9 22:15:01 | 显示全部楼层
for (int i=0;i<=10;i++)
int s=0;
-------------
比较规范的写法
int i = 0;
int s = 0;

for(i = 0;i <= 10;i++)
{
   s = 0
}
i和s是局部变量在堆栈中申请地址空间,for循环只是附值操作,没有空间释放。
回复

使用道具 举报

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-10-10 02:00:01 | 显示全部楼层
2楼的似乎没有明白我的意思!
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-10-10 02:15:01 | 显示全部楼层
S是局部变量吗???
我想是的吧?!
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-10 03:00:01 | 显示全部楼层
这样是不规范的写法,C语言不支持随时申请空 间的,估计编译都通不过
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-10 08:30:01 | 显示全部楼层
要么加static咯
回复

使用道具 举报

0

主题

1

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-10-10 10:41:51 | 显示全部楼层
在Dev-cpp里试几下
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-10 11:45:01 | 显示全部楼层
会释放,局部变量的生命期开始于声明处,结束于其作用域结束处,把程序改为
        for(int i=0;i<=10;i++)
           {
             if(i==0)  int s=1;
                 else  s++;
           }
就看出来了。
回复

使用道具 举报

0

主题

1

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-10-13 22:39:58 | 显示全部楼层
#include <cstdio>
int main()
{
        for (int i = 0; i < 10; i++)
        {
                int s = 0;
                s++;
                printf("%d", s);
        }
}
结果全是111111,说明已经释放了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表