作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 C 的初学者,已经开始用 C 编写代码。我对变量的范围有疑问。当任何变量写入 block 内时,它的作用域就在该 block 内。但是,当使用 return word 时,如何在 block 外访问变量?
例子:
int add(int a, int b)
{
int c;//scope of c is within this block
c=a+b;
return c;
} //it ends here
void main()
{
int answer;
answer=add(2,3);//how we gets value of "c " here
printf("%d",answer);
}
最佳答案
它不能在 block 外访问。当您执行 return c;
时,将返回 c
值的拷贝,而不是 c
本身。
int foo()
{
int c = 3;
return c;
}
这只返回 3,值 c
成立。
有些语言允许编译器通过扩展c
的范围来“作弊”,但这是一个optimization并且不会改变逻辑。
关于c# - 使用 "return"时如何在 block 外访问任何变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092722/
我是一名优秀的程序员,十分优秀!