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
。
发布于 2016-04-26 01:15:01
在C中,值是到处传递的,所以在您所做的工作中,不会出现问题。
执行返回时,将返回变量temp
的值。即使变量在函数返回后被销毁,也不会出现问题。
发布于 2016-04-26 01:14:04
temp
是一个具有自动存储的变量,因此,在函数返回时,它将不再可用。
但是,函数返回的结构不是temp
,而是temp
的副本。因此,答案是没有函数返回一个结构的问题。
发布于 2016-04-26 01:32:00
与数组不同,结构在作为参数传递或返回时会被复制,就像原始类型(int
)一样。
https://stackoverflow.com/questions/36860373
复制