gpt4 book ai didi

c - 函数返回后该值如何继续存在?

转载 作者:行者123 更新时间:2023-12-04 11:52:07 26 4
gpt4 key购买 nike

标题几乎总结了这一点。我怎么可能将本地创建的Point a(在ReadPoint()函数中)分配给不同范围的变量。本地创建的Point a是否与函数readPoint()的堆栈一起“弹出”?到底是怎么回事?

struct Point readPoint(void)
{
struct Point a;

printf("x = ");
scanf("%lf",&b.x);

printf("y = ");
scanf("%lf",&b.y);

return a;
}

int main(int argc, char **argv) {
Point test = readPoint();
printPoint(test);
return 0
}

最佳答案

在这方面,struct与原始类型没有区别。它的原理完全相同:

int foo(void)
{
int x = 5;
return x;
}

int main(void)
{
int y = foo();
printf("%d\n", y);
}


如何实现这一点的细节取决于实现。但是通常,被调用函数将返回值(无论是 int还是 struct)放置到堆栈上,然后调用方可以访问该堆栈位置。

关于c - 函数返回后该值如何继续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479228/

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