C语言:定义结构体
C语言 结构 定义
2023-09-27 14:22:46 时间
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct tag {
member-list
member-list
member-list
...
} variable-list ;
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。下面是声明 Book 结构的方式:
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。以下为实例:
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//同时又声明了结构体变量s1
//这个结构体并没有标明其标签
struct
{
int a;
char b;
double c;
} s1;
//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c
//结构体的标签被命名为SIMPLE,没有声明变量
struct SIMPLE
{
int a;
char b;
double c;
};
//用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
struct SIMPLE t1, t2[20], *t3;
//也可以用typedef创建新类型
typedef struct
{
int a;
char b;
double c;
} Simple2;
//现在可以用Simple2作为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;
在上面的声明中,第一个和第二声明被编译器当作两个完全不同的类型,即使他们的成员列表是一样的,如果令 t3=&s1,则是非法的。
结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。
//此结构体的声明包含了其他的结构体
struct COMPLEX
{
char string[100];
struct SIMPLE a;
};
//此结构体的声明包含了指向自己类型的指针
struct NODE
{
char string[100];
struct NODE *next_node;
};
如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明,如下所示:
struct B; //对结构体B进行不完整声明
//结构体A中包含指向结构体B的指针
struct A
{
struct B *partner;
//other members;
};
//结构体B中包含指向结构体A的指针,在A声明完后,B也随之进行声明
struct B
{
struct A *partner;
//other members;
};
相关文章
- C语言结构体初始化的四种方法(转载)
- C语言冒泡、选择、直插算法
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.5 位运算实战演练1
- 《例说51单片机(C语言版)(第3版)》一1.3 认识MCS-51的存储器结构
- 【C语言】零长度数组(可变数组,柔性数组)
- 【C语言】将n个数按输入时顺序的逆序排列输出,用函数和指针实现。
- (第13列)C语言:结构体数组------学生成绩排名
- (第12列)C语言:定义结构体数组-----投票系统
- C语言选择结构程序设计——“21点”游戏and一元二次方程and能否被3,5,7,9整除
- 【C语言进阶】深度解析数据在内存中的存储
- C语言中关于结构体的内存对齐
- C语言入门基础内容篇—基本数据类型
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
- C语言的结构体和C++结构体的区别
- C语言结构体内存对齐