【发布时间】:2013-08-02 06:51:25
【问题描述】:
如果您需要从函数返回 struct,通常会返回指向 struct 的指针。
如果你想返回一个结构数组,是否建议:
- 返回结构数组(指向第一个元素的指针)
- 还是返回一个结构指针数组?
我已经为下面的两个选项画了一个图表:
1:
2:
给定以下结构定义
struct values {
int a;
int b;
};
这里是一些示例代码,用于从两个选项访问结构的字段:
选项#1:
struct values *vals = get_values1();
printf("%d, %d\n", values[0].a, values[1].b);
选项 #2:
struct values **vals = get_values2();
printf("%d, %d\n", values[0]->a, values[1]->b);
【问题讨论】:
-
@GrijeshChauhan 什么是最好的?我选择哪个重要吗?
-
我看到不使用版本 1 的唯一问题是,在第二个版本中可能更容易识别结构的数量,因为
NULL指针可以用作停止元素,而在第一个版本中,可能无法定义此停止值。 -
@alk,是的,你是对的 :)