我可以返回一个非参数变量吗?
Can I Return an non-argument variable?
是否有可能从函数返回一个变量,而不将其作为参数传递?例如:
int example(int x, int y) {
int z = x + y;
return z
}
同样,当我回到我的主函数时,我将如何使用它?
对于像c++这样的语言来说,这是非常基本的,考虑通过挑选一本好书来帮助自己:
c++图书指南和列表
是否有可能从函数返回一个变量,而不将其作为参数传递?
它完全有效。你为什么认为不是呢?
按值返回函数的局部变量是合法的。将变量的副本返回给调用者。
你不应该返回局部变量的地址,因为局部变量只存在于定义它的作用域中。
应该避免什么?
int* example(int x, int y)
{
int z = x + y;
return &z;
}
当我回到我的主函数时,我将如何使用它?
int main()
{
std::cout<<example(4,5);
return 0;
}
这是合法的
复制变量z 的内容。
int iElsewhere = 0;
iElsewhere = example(1, 2); // now iElsewhere == 3
正如Kamil Klimek的评论所说,你应该开始阅读c++的小教程或介绍,因为这个问题是非常非常基本的 C/c++。
您可以返回一个非参数变量。下面给出的代码可以。
int example(int x, int y) {
int z = x + y;
return z;
}
因为在这种情况下,您返回的值是基本类型,如int。但是在复杂的情况下,当你返回一个变量的地址时,它已经用一种天才的方式解释了。
现在在main
中使用这个变量int main(){
int ret = example(4,5);
//do whatever with ret..
}
您的示例非常好。你返回的是一个离散值,这是允许的。在底层发生的事情是,你能够从一个函数返回一个值在芯片的寄存器之一。为了清楚起见,不要光顾寄存器,通常是32/64位值,具体取决于操作系统。
当处理核心类型,如int, bool, float时,这些类型存储在寄存器中,因此您可以毫无顾虑地返回。
可以返回的另一种类型的信息是指向某个内存的地址指针。当你这样做的时候,返回值还是一个32/64位的指针,它只是数据的地址。
你需要注意的是,确保在函数中分配的任何内存都是通过malloc或new(分别使用C或c++时)完成的,而不仅仅是在方法中声明的结构。
。像这样的事情是不好的,并且会在堆栈被覆盖时导致问题(除非这是你的意图:))。
void * myfunction (){MYSTRUCT muylocalstructure;Void * mypointer = &mylocalstructure;返回mypointer;}
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 扩展可变参数模板中的变量名称
- 在类构造函数中定义结构变量的参数
- 带有整数的变量参数列表
- 转发变量参数列表以模拟 std::thread
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 存储稍后要转发的变量参数
- C++具有模板成员变量的类. 和参数内存输出
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 为变量模板的每个参数调用模板函数
- 具有推导参数的模板函数指针数组变量
- 函数参数变量总是需要 & 或 * 运算符吗?
- 为什么 beginthreadex 线程参数变量在父线程中没有更新
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 如何在函数中使用非参数变量?
- 即将将引用作为函数中的参数传递以更改参数变量的值
- 基于不断变化的参数/变量的XML get值
- cocos2d-x v3 CallFunc作为参数/变量如何
- 在编译时使用c++元编程中的运行时参数(变量)
- 我可以返回一个非参数变量吗?