【发布时间】:2020-05-28 11:15:17
【问题描述】:
我用 C 编写了以下程序。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int num1;
int num2;
} two_ints;
two_ints func() {
return (two_ints){.num1 = 1, .num2 = 2};
}
int main() {
two_ints nums = func();
printf("%d %d", nums.num1, nums.num2);
return 0;
}
此代码出于某种原因有效。它打印 1 和 2。我想知道的是它每次都能正常工作吗?我的意思是,编译器是否做了一些事情来使结构返回静态,因为它应该被返回。
谢谢。
【问题讨论】:
-
为什么它需要是静态的?你不是在返回一个指针,你是在返回一个结构。返回值被复制。
-
可以在C中按值返回一个结构体,返回的数据是函数内部本地数据的硬拷贝。
标签: c struct static return-value