结构体
结构体的声明
结构体是一种复合数据类型,它允许我们将多个不同类型的数据项组合成一个单一的实体。这与其他基本数据类型(如整数、浮点数、字符等)不同,后者通常只能存储单一类型的数据。
类比:数组:一组相同元素的集合。
结构的声明
结构的声明使用 struct 关键字,后跟结构体的名称和花括号内的成员变量。
struct名称
{
成员变量1;
成员变量2;
...
};
eg:
//学生类型
struct Stu
{
char name[20];
int age;
char id[20]
};
变量创建
结构体变量可以通过两种方式创建:
1.直接在结构体后面加变量名称
struct Stu
{
char name[20];
int age;
char id[20];
}s1,s2,s3;
2.在主函数中创建
struct Stu
{
char name[20];
int age;
char id[20]
};
int main()
{
struct Stu s1,s2,s3
return 0;
}
区别:
前者是全局变量,后者是局部变量
特殊声明
结构体的特殊声明,即匿名结构体,可以在没有名称的情况下声明一个结构体类型。这种声明方式是单次使用的,通常用于函数内部,并且只能通过直接初始化的方式创建变量:
struct {
int a;
char c;
float f;
};
这种成为匿名声明,在结构体的struct后面没有结构体名称,这种声明是一次性的,并且创建变量的方式也是唯一的;
eg:
struct {
int a;
char c;
float f;
}x;
结构体的自引用
结构体的自引用是指在一个结构体中直接或间接地包含对其自身的引用。
如果一个结构体中含有指向自身类型的指针,就可能出现自引用的情况自引用结构体是指在结构体中包含指向自身类型的指针。这种结构体通常用于实现链表、树等数据结构。例如:。
eg:
struct Node{
int data;
struct Node* next;
};
上述的例子当中就是典型的自引用,也是常见的数据结构中链表结点的结构体。其中Node前的*不能去掉,不然无法确定结构体的大小。
结构体的定义和初始化
1.定义(两种创建变量的方式)
struct Sn
{
char c;
int i;
}s1,s2;
int main()
{
struct Sn s3,s4;
return 0;
}
这里的 next 指针指向 struct Node 类型的另一个实例,实现了链表节点之间的链接。
2.初始化(两种)
a.简单结构体
struct Sn
{
char c;
int i;
}s1={'q',100},//这种是按照成员顺序初始化
s2={.i=100,.c='w'}
;
int main()
{
struct Sn s3,s4;//s3,s4的初始化可以同上
return 0;
}
b.包含结构体的结构体
struct Sn
{
char c;
int i;
};
struct S{
double d;
struct Sn s1;
int arr[10];
};
int main()
{
struct S s={2.13,{'a',99},{1,2,3}};
return 0;
}
标签:20,struct,int,组织,C语言,char,Sn,标签,结构
From: https://blog.csdn.net/qq_67411584/article/details/137570627