是同一作用域的函数部分中的函数调用
Is a function call within a function part of the same scope
MyNode
在通过函数调用传递时是否仍然存在,或者它是否超出了范围?函数调用中的函数调用是否属于同一范围?
int Foo(){
MyNode node;
node.a = 1;
node.b = 2;
return DoThings(&node);
}
int DoThings(MyNode *node){
// use node to do great stuff
// but does it still exist?
}
我正在调试一些代码,它基本上在这里崩溃了,但是这段代码已经有几十年的历史了,并且已经工作了那么久,所以现在我被迷惑了。
范围是源代码标识符可见的位置。生存期是指在程序执行期间存在对象的时间。
像node
这样具有自动存储持续时间的对象与定义它的块的执行相关联。当该块的执行结束时,其生命周期结束。return 语句可以结束执行,程序控制也可以流向块的末尾。调用子例程只是暂停块的执行;它并没有结束它。该对象在子例程调用期间继续存在,并且可以由子例程访问。
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 从 Android JNI/NDK 代码中的C++函数调用 C 函数
- 如何从前面定义的另一个函数调用函数模板
- 为什么我们不能从具有默认参数的函数调用函数?
- 从其他函数调用函数或将函数作为数组的参数是一种好做法还是坏做法
- 使用c++中定义的头函数调用函数
- 从FORTRAN代码调用的c++函数调用c++函数
- 从函数调用函数时出错"identifier not found"
- 函数A调用函数B,函数B调用函数A,你怎么称呼它
- 函数A调用函数B,反之亦然(为什么不起作用)
- 当C++函数参数列表中有String类型时,我可以使用C程序函数调用C++函数吗
- 从静态函数调用函数指针
- 从 Objective-C 函数调用C++函数不起作用
- 从c++ /CLI函数调用c#函数