int a;
int main()
{
:
f2();
:
f1();
}
void f1()
{
auto int b;
:
f2();
:
}
void f2()
{
:
static int c;
:
}
我的问题是auto int b 在f1中定义的这个变量是否对f1函数中 被调用函数f2();可见?在调用f2()时,f2()可否对f1的变量b进行调用?
9 个解决方案
#1
f1(),f2(),没有参数,不能传递
如果有参数,可以传递
另外
一个生命周期在语句组内部, auto int b;
一个在整程序生存期内
如果有参数,可以传递
另外
一个生命周期在语句组内部, auto int b;
一个在整程序生存期内
#2
b在f2中不可见。
函数是平等的,不是说调用谁谁就是下一级函数,就可以使用上一级的局部变量。
函数是平等的,不是说调用谁谁就是下一级函数,就可以使用上一级的局部变量。
#3
得使用全局变量才行……
#4
如果传参的话可以
#5
如果 b 是个传递到 f2() 中的参数,那就可见,如果没有传递到 f2() 中,那就不可见
#6
不要把JS的思想代到C++中来了.
每个变量是有生命周期和作用域的.
auto int b; 这个是函数f1中的变量, 作用域限定在f1内, f2中是不可见的.
同理, f1中也对f2中的c不可见
每个变量是有生命周期和作用域的.
auto int b; 这个是函数f1中的变量, 作用域限定在f1内, f2中是不可见的.
同理, f1中也对f2中的c不可见
#7
这个帖子也纠正了我认识上的误区!
#8
f2 已经分家出去了,单过了再用老头的钱说不过去的。
#9
闭包是可以的,但需要支持C99
#include<stdio.h>
int main()
{
int a=1;
void f()
{
a=2;
}
f();
printf("%d\n",a);
return 0;
}
// Output:
// 2
#1
f1(),f2(),没有参数,不能传递
如果有参数,可以传递
另外
一个生命周期在语句组内部, auto int b;
一个在整程序生存期内
如果有参数,可以传递
另外
一个生命周期在语句组内部, auto int b;
一个在整程序生存期内
#2
b在f2中不可见。
函数是平等的,不是说调用谁谁就是下一级函数,就可以使用上一级的局部变量。
函数是平等的,不是说调用谁谁就是下一级函数,就可以使用上一级的局部变量。
#3
得使用全局变量才行……
#4
如果传参的话可以
#5
如果 b 是个传递到 f2() 中的参数,那就可见,如果没有传递到 f2() 中,那就不可见
#6
不要把JS的思想代到C++中来了.
每个变量是有生命周期和作用域的.
auto int b; 这个是函数f1中的变量, 作用域限定在f1内, f2中是不可见的.
同理, f1中也对f2中的c不可见
每个变量是有生命周期和作用域的.
auto int b; 这个是函数f1中的变量, 作用域限定在f1内, f2中是不可见的.
同理, f1中也对f2中的c不可见
#7
这个帖子也纠正了我认识上的误区!
#8
f2 已经分家出去了,单过了再用老头的钱说不过去的。
#9
闭包是可以的,但需要支持C99
#include<stdio.h>
int main()
{
int a=1;
void f()
{
a=2;
}
f();
printf("%d\n",a);
return 0;
}
// Output:
// 2