结构体的定义

来源:百度知道 编辑:UC知道 时间:2024/04/30 01:17:47
我在书上看到结构体的定义好像有下面3种方法,谁能告诉这其中有什么不同吗,3种方法中a和b分别代表什么?
⒈struct a
{char input;
a * p_input;
};
⒉typedef struct a
{char input;
a * p_input;
}b;
⒊typedef struct a
{char input;
a *p_input;
}a,*b;

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

注意这里 a,b 不是结构体变量,楼上的说错了
因为前面有个typedef,是用来去别名的

1.是正常的定义结构体 a
2.是给结构体 a 取了一个别名 b;
3.是给结构体定义了一个这种结构体的指针 b;这里的a就多余了,一般取一个和结构体不一样的名字,比如你的小名当然不和主名一样了,不过一样也不会错

typedef struct a
{char input;
a *p_input;
}*b; 这个和我们以前定义 typedef int *Elemtype
其实是同一个道理

1定义了一个结构体a,里面有字符成员 input 和 结构体a的指针 p_input(用于指向下一个) (相当于链表了)。没有定义任何的结构体变量。
2.定义了结构体a
里面有字符成员 input 和 结构体a的指针 p_input(一样)
不过定义好结构后又直接定义了一个结构变量b,其实可以改成
typedef struct a
{char input;
a * p_input;
}
a b;

3.一样的,成员那些不多讲了。然后定义了一个结构变量a和一个指针结构变量b