浅谈C语言结构体的攻略如下:
什么是结构体
结构体是C语言中非常重要的一种复合数据类型,它由不同数据类型的数据成员组成。结构体能够将多个数据成员组合起来,便于进行操作和管理。C语言中的结构体类似于面向对象语言中的类,但不具有继承和封装的特性。
如何定义结构体
定义一个结构体需要用到struct
关键字,结构体的基本语法格式如下:
struct struct_name {
// 数据成员
data_type member_name1;
data_type member_name2;
// ...
};
其中,struct_name
可以是任意合法的标识符,而data_type
是任意合法的C数据类型,member_name
则是数据成员的名称。
举个例子,定义一个表示学生信息的结构体:
struct student {
int id;
char name[20];
int age;
};
这个结构体包含了三个数据成员:id
表示学生的学号,name
表示学生的姓名,age
表示学生的年龄。
如何使用结构体
声明结构体变量
声明一个结构体变量需要使用结构体定义后的名称并在后面跟上变量名称。例如,要声明一个名为stu1
的学生结构体变量:
struct student stu1;
访问数据成员
访问结构体变量的数据成员需要使用.
操作符。例如,要获取stu1
这个结构体变量的学号:
int id = stu1.id;
初始化结构体变量
初始化结构体变量的方式有以下两种:
逐个初始化数据成员
struct student stu1;
stu1.id = 1001;
strcpy(stu1.name, "张三");
stu1.age = 18;
批量初始化数据成员
struct student stu1 = {1001, "张三", 18};
示例1:交换两个结构体变量的值
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
int age;
};
void swap(struct student *s1, struct student *s2) {
struct student tmp = *s1;
*s1 = *s2;
*s2 = tmp;
}
int main() {
struct student stu1 = {1001, "张三", 18};
struct student stu2 = {1002, "李四", 19};
printf("交换前:\n");
printf("stu1: id=%d, name=%s, age=%d\n", stu1.id, stu1.name, stu1.age);
printf("stu2: id=%d, name=%s, age=%d\n", stu2.id, stu2.name, stu2.age);
swap(&stu1, &stu2);
printf("交换后:\n");
printf("stu1: id=%d, name=%s, age=%d\n", stu1.id, stu1.name, stu1.age);
printf("stu2: id=%d, name=%s, age=%d\n", stu2.id, stu2.name, stu2.age);
return 0;
}
程序的输出结果如下:
交换前:
stu1: id=1001, name=张三, age=18
stu2: id=1002, name=李四, age=19
交换后:
stu1: id=1002, name=李四, age=19
stu2: id=1001, name=张三, age=18
示例2:定义一个包含数组的结构体
#include <stdio.h>
#include <string.h>
struct inventory {
char item_name[20];
int item_count[12];
};
int main() {
struct inventory inv = {"item1", {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120}};
printf("inventory name: %s\n", inv.item_name);
printf("January item count: %d\n", inv.item_count[0]);
printf("March item count: %d\n", inv.item_count[2]);
printf("December item count: %d\n", inv.item_count[11]);
return 0;
}
程序的输出结果如下:
inventory name: item1
January item count: 10
March item count: 30
December item count: 120
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C语言结构体 - Python技术站