1.结构体:
>结构体的类型和声明:结构体是一种聚合类型,在C语言中结构体不能为空。
结构体的声明:结构体是一些值的集合,这些值称为成员变量。成员变量可以是不同的值。
struct tag
{ // 结构体名tag见名只意,可以省略,但不建议省略
int a; //结构体成员变量:可以是任何类型
cha c;
}list; //分号不能省略
结构体之间不能相互赋值:
struct {int a;char c;}x;
struct {int a;char c;}*p;
则p=&x;是错误的。
结构体的不完整声明:
struct A
{
int a;
struct B*next
};
struct B
{
int a;
struct A*next
};
这种方法可行,不过建议再A中使用结构体是声明一下:
struct B;
struct A
{
int a;
struct B*next
};
struct B
{
int a;
struct A*next
};
>结构体访问:
结构体变量 访问成员变量时通过(.)来访问的。
struct stu
{
int a;
char name[];
};
struct stu s;
s.a=20;
结构体指向变量的成员有时候我们得到的不是一个结构体变量,而是指向结构体的指针,那么访问成员如下。
struct stu
{
int a;
char name[];
}s;
void print(struct stu *p)
{
printf("a=%d,name=%s\n",(*p).a,(*p).name);
printf("a=%d,name=%s\n",p->a,p>name);
}
>结构体的自引用:结构体中可以包含一个为该类型本身的成员变量。
struct stu
{
int a;
struct stu *next
};
typedef struct stu //typedef对当前结构体重命名
{
int a;
struct stu1 *next
}stu1;
>结构体变量