所以我知道如何声明这样描述的结构:
struct type_t {
int ha;
int ja;
int ka;
};
然后初始化它:
struct type_t[10];
当我面对这样的结构时怎么样:
struct type_t {
int ha;
int ja;
int ka;
} *type_tlist = NULL;
我会继续在主代码中使用*type_tlist
吗?
先谢谢你们!!
答案 0 :(得分:3)
假设我们有这个结构:
struct type_t {
int ha;
int ja;
int ka; };
这是struct type_t
的定义。
您可以按如下方式声明struct type_t
类型的变量:
struct type_t a;
或数组:
struct type_t b[10];
这两个构造声明了一些可以立即使用的变量。您可以声明将struct type_t
作为类型的指针:
struct type_t *c;
但是为了从中访问成员,您需要为它们分配一些内存:
struct type_t *c = malloc(sizeof(struct type_t));
请注意,在拥有变量(如a或b [2])时,可以使用点运算符访问其成员:
a.ha = 3;
例如,。但是当有指针时,您可以使用 - >访问其成员。操作者:
c -> ha = 3;
您可以为指针指定NULL
值:
c = NULL;
但在为其分配一些内存之前,您可能无法访问其成员。
我试着给你一些关于使用结构的一瞥,但我建议你阅读一本C书(或至少关于结构和/或指针的章节)。
答案 1 :(得分:0)
应该是:
struct type_t {
int ha;
int ja;
int ka;
};
typedef type_t* type_tlist;
然后你可以像这样初始化一个指向结构的指针。
type_tlist x = malloc(sizeof(type_t));
如果您不想使用typedef,可以这样做。
struct type_t* x = malloc(sizeof(type_t));
现在使用struct
的元素你可以使用 - >运算符或使用它复杂化。操作员ff。代码做同样的事情。
x -> ha = 1;
(*x).ha = 1;
请注意这些等价物:
array[0] == *(array + 0)
所以你不需要使用 - >运算符,如果结构是在数组中。你可以使用没有参考运算符'*'
的点