是否可以从函数返回变量而不将其作为参数传递?例如:
int example(int x, int y) {
int z = x + y;
return z
}
另外,当我回到我的主要功能时,我将如何使用它?
是否可以从函数返回变量而不将其作为参数传递?例如:
int example(int x, int y) {
int z = x + y;
return z
}
另外,当我回到我的主要功能时,我将如何使用它?
这对于像 C++ 这样的语言来说是非常基础的,可以考虑通过选择一本好书来帮助自己:
The Definitive C++ Book Guide and List
是否可以从函数返回变量而不将其作为参数传递?
这是完全有效的。为什么你认为不是?
返回一个局部变量以按值运行是合法的。将变量的副本返回给调用者。
您不应该做的是返回局部变量的地址,因为局部变量只存在于定义它的范围内。
应该避免什么?
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++ 基础。
Your example is perfectly fine. You're returning a discrete value which is allowed. Under the hood what is happening is you're able to return a value in one of the chip's registers from a function. Just for clarity and not to be patronising a register is typically a 32/64 bit value depending on the OS.
When dealing with core types like int, bools, floats these are stored in registers so you can return this without any worries.
The other type of info you can return is a pointer of an address to some memory. When you do that the return value is again a 32/64bit pointer that is just the address for the data.
What you do need to be careful when doing is ensuring any allocated memory done in a function is done via a malloc or new (when using C or C++ respectively) and not just a declared structure in the method.
E.g. something like this is bad and will cause issues as the stack gets overwritten (unless that's your intention :) ).
void* myfunction() { MYSTRUCT muylocalstructure; void* mypointer = &mylocalstructure; return mypointer; }
您可以返回一个非参数变量。下面给出的代码很好。
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..
}