gpt4 book ai didi

c# - 访问 C 和 C# 中函数的返回值

转载 作者:行者123 更新时间:2023-11-30 18:42:47 25 4
gpt4 key购买 nike

我对 C/C++ 和 C# 中函数返回值的可用性概念有疑问。我知道返回指向函数中创建的变量(局部变量)的指针是不正确的。在这种情况下,如果我想创建一个值数组(例如 int)并从函数返回该数组,我该怎么做?另外,如果我直接返回局部变量(而不是通过指向它的指针),则运行时何时回收为此变量分配的内存 - 是在返回的值分配给该值的接收者之后吗?

另一个相关问题是在 C# 中:在 C# 中使用“new”运算符在函数中创建的变量是在堆上创建的。对于在函数中创建的局部变量来说是这样吗?如果返回的值是通过引用/地址返回的,那不是违反了上面提到的规则(C++)吗?在 C# 中如何实现这一点?

我的问题可能看起来很天真,但我试图更好地理解编译器和运行时的行为。如果您能为我提供这些问题的答案,那将会非常有帮助。

谢谢,拉克什。

最佳答案

Blockquote if I wanted to create an array of values (say int) and return this array from the function how do I do this?

以下内容将在 C# 中执行此操作

public int[] Example(int size)
{

int[] numbers = new int[size];
return numbers;

}

And also if I return a local variable directly (not through a pointer to it) when is the memory allocated for this variable reclaimed by the runtime - is it after the value returned is assigned to the receiver of this value?

如果您不返回指针,那么您只是返回局部变量的拷贝。你问题的第二部分毫无意义。

Another related question is in C#: the variables created in a function using 'new' operator in C# are created on heap. Is it true in the case of local variables created in a function?

是的,它是在堆上创建的。

If the values returned are by reference/address, isn't it violating the rule mentioned above(C++)? What is the way in which this is achieved in C#?

您不应该尝试将 C++ 与 C# 进行比较,因此不应回答这个问题。此外......所取得的成果也不清楚。

My questions may seem naive, but I am trying to understand the behavior of compilers and runtimes better. It'd be of great help if you could provide me the answers for these questions.

所有这些问题都可以在任何 C++ 或 C# 新手程序员书中找到。

关于c# - 访问 C 和 C# 中函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com