为何for循环里能直接用函数里的变量?
f(){intbbb=3;for(intj=0;j<10;j++){inttt=55;bbb=4;}}循环每一次执行完,tt都会被释放吧?这是为何?因为tt是局部变量吧?...
f()
{
int bbb =3;
for(int j=0;j<10;j++)
{
int tt =55;
bbb=4;
}
}
循环每一次执行完,tt都会被释放吧?这是为何?因为tt是局部变量吧?
何为局部?就是那个大括号么?那么for循环是不是一个函数呢?
为何 bbb这个变量却能直接在for里面拿来使用,为何不用先传参数?
还有 if ()
{
int ccc;
}
这个ccc会随着大括号执行结束而释放么? 展开
{
int bbb =3;
for(int j=0;j<10;j++)
{
int tt =55;
bbb=4;
}
}
循环每一次执行完,tt都会被释放吧?这是为何?因为tt是局部变量吧?
何为局部?就是那个大括号么?那么for循环是不是一个函数呢?
为何 bbb这个变量却能直接在for里面拿来使用,为何不用先传参数?
还有 if ()
{
int ccc;
}
这个ccc会随着大括号执行结束而释放么? 展开
3个回答
展开全部
1、循环每一次执行完,tt都会被释放吧?这是为何?因为tt是局部变量吧?
答:正确,每次tt都会被释放的。
2、何为局部?就是那个大括号么?那么for循环是不是一个函数呢?
答:定义在函数内部的变量,根据定义位置不同,有不同的作用域。for只是一个循环体,不是函数。
3、为何 bbb这个变量却能直接在for里面拿来使用,为何不用先传参数?
答:你可以这样理解,bbb定义在for的外层,相对于for来说是一个全局变量,所以可以直接拿来使用。
答:正确,每次tt都会被释放的。
2、何为局部?就是那个大括号么?那么for循环是不是一个函数呢?
答:定义在函数内部的变量,根据定义位置不同,有不同的作用域。for只是一个循环体,不是函数。
3、为何 bbb这个变量却能直接在for里面拿来使用,为何不用先传参数?
答:你可以这样理解,bbb定义在for的外层,相对于for来说是一个全局变量,所以可以直接拿来使用。
展开全部
依次回答你的问题
循环每一次执行完,tt都会被释放吧?
-->正确 每次都会释放
这是为何?因为tt是局部变量吧?
-->正解
何为局部?就是那个大括号么?
-->局部变量就是定义在函数内部的变量
根据在函数内定义位置不同而有不同作用域
其作用域可以理解为 从定义位置开始到下一个大括号结束
那么for循环是不是一个函数呢?
-->for循环是C的一个循环语句 不是函数
为何 bbb这个变量却能直接在for里面拿来使用,为何不用先传参数?
-->不是函数 自然没有参数一说
还有 if ()
{
int ccc;
}
这个ccc会随着大括号执行结束而释放么?
-->会的 如果外部没有定义过ccc 那样你在大括号后面再使用ccc程序编译会报错 你可以试一下
更多追问追答
追问
局部变量就是定义在函数内部的变量........因为tt是局部变量吧?....-->正解
tt被释放是因为他是局部变量,而你说局部变量就是定义在函数内部。
请问tt所在的函数在哪里?你又说for不是个函数,那他怎么在for里面执行完后就被释放了呢?
同理还有If
追答
给你写个简单的例子吧
int main()
{
int a = 0;
printf("%d\n", a);
{
int a = 3;
printf("%d\n", a);
}
printf("%d\n", a);
{
printf("%d\n", a);
}
printf("%d\n", a);
}
这个例子里面定义了两个a
一个是第三行的 一个是第6行的
其中第三行的是整个main中有效
第6行的 作用域开始于定义点第6行 结束于第8行 大括号
所以输出会是
0
3
0
0
0
一个函数的函数体 是从函数名 往下第一个大括号{开始
到与它匹配的}结束
所有定义在其中的变量都属于该函数的局部变量
比如
int func()
{
int a=1;
if(a)
{
int b;
}
for(a = 0; a < 100; a++)
{
int c;
}
}
这个函数里面的a b c都是属于func的局部变量 但是有各自不同的作用域
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bbb是在for循环外层声明的,循环内有效。。
以}结束,会释放局部变量
以}结束,会释放局部变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询