如何访问结构?

时间:2011-04-12 12:21:38

标签: c

struct result {
  int number;
  int length;
};

struct result findLongestSeq(int intarray[], int size) {
  result->number // undefined symbol
}

如何在函数findLongestSeq中访问struct结果?

感谢

2 个答案:

答案 0 :(得分:3)

struct result {
  int number;
  int length;
};

struct result findLongestSeq(int intarray[], int size) {
  struct result result;
  result.number = 0;
  result.length = 42;
  return result;
}

如果您正在处理struct result foo,则可以通过foo.number访问其成员。 但是,如果您正在处理指向foo(struct result *foo)的指针,那么您可以通过foo->number访问其成员。

如果您通过

手动分配结果结构
struct result *result = (struct result *)malloc(sizeof (struct result));

然后你必须通过result->number访问其成员(并且一旦不再使用它将负责释放它)。


为了更好的可读性,我宁愿使用它:

typedef struct {
  int number;
  int length;
} ResultStruct;

然后,您可以使用ResultStruct result;代替冗余和详细struct result result;

答案 1 :(得分:0)

您必须记住,只需输入

即可
struct result {
  int number;
  int length;
};

您只定义具有名称结果的结构实际上是什么样的结构,即它的构成部分。这是一般性定义,但您还有该类型的变量。

要访问此结构的值,您必须通过

创建变量
struct result myResult;

或者你想要打电话。此时,您可以使用myResult.number

访问此结构的成员