I have a code:
struct point makepoint(int x, int y)
{
struct point temp;
temp.x = x;
temp.y = y;
return temp;
}
我们在这里遇到问题是因为我们正在返回本地结构,在 makepoint 函数终止后它是否被销毁?此代码来自书籍
C编程语言(第二版)作者:Brian W. Kernighan•Dennis M. Ritchie
答案 0 :(得分:2)
temp
是一个带有自动存储的变量,所以是的,它会在函数返回时不再可用。
但是,返回的函数的结构不是temp
,它是temp
的副本。所以答案是函数返回结构没有问题。
答案 1 :(得分:2)
在C中,值会传递,所以就像你一样,不会出现问题。
执行返回时,返回变量temp
的值。即使变量在函数返回后被销毁,也不会有问题。
答案 2 :(得分:0)
与数组结构不同,它在作为参数传递时或在返回时被复制,就像原始类型(int
)一样。