返回结构数组或结构指针数组?

Tyi*_*ilo 8 c arrays struct pointers

如果需要struct从函数返回a ,通常会返回指向的函数struct.

如果您想返回结构数组,建议:

  1. 返回一个结构数组(指向第一个元素的指针)
  2. 或者返回一个struct指针数组?

我已经为下面的两个选项绘制了一个图表:

1:

在此输入图像描述

2:

在此输入图像描述

给出以下结构定义

struct values {
    int a;
    int b;
};
Run Code Online (Sandbox Code Playgroud)

这里有一些示例代码,用于从两个选项访问结构的字段:

选项1:

 struct values *vals = get_values1();
 printf("%d, %d\n", values[0].a, values[1].b);
Run Code Online (Sandbox Code Playgroud)

选项#2:

 struct values **vals = get_values2();
 printf("%d, %d\n", values[0]->a, values[1]->b);
Run Code Online (Sandbox Code Playgroud)

alk*_*alk 6

我认为不使用版本1的唯一问题是,在第二个版本中识别结构(返回)的数量可能更容易,因为NULL指针可以用作止动元素,而在第一个版本中它可能不会可以定义止动元件.


小智 5

除非你有充分的理由返回指针指针(例如,如果你想稍后修改指针),我认为指向结构的指针就足够了.不需要用双指针欺骗.