下面就是针对“C语言中的结构体的入门学习教程”的完整攻略:
什么是结构体
在C语言中,结构体是一种自定义的数据类型,可以将多个不同类型的数据组合成一个整体,以实现更方便的数据处理。
结构体定义的格式如下:
struct 结构体名{
数据类型1 成员名1;
数据类型2 成员名2;
......
数据类型n 成员名n;
};
其中,结构体名是自定义的类型名称,成员名可以是任意合法的标识符。以下是一个实际的结构体定义示例:
struct student{
int id;
char name[20];
int age;
};
这个结构体定义了一个学生类型,包含学生的学号、姓名和年龄三个成员。
使用结构体时,可以通过“.”操作符来访问结构体中的成员,例如:
struct student s = {10086, "张三", 18};
printf("学生的学号是:%d\n", s.id);
printf("学生的姓名是:%s\n", s.name);
printf("学生的年龄是:%d\n", s.age);
结构体的初始化
结构体变量可以像普通变量一样初始化,可以使用以下方式进行初始化:
struct student s1 = {10086, "张三", 18}; // 全部初始化
struct student s2 = {10010}; // 部分初始化
struct student s3 = {.name = "李四", .age = 20}; // 指定成员初始化
其中,第一种方式是对全部成员进行初始化,第二种方式是对部分成员进行初始化,未初始化成员会被自动赋值为0或空字符。第三种方式是对指定的成员进行初始化,未指定的成员会被自动赋值为0或空字符。
结构体的指针
结构体变量也可以有指针类型,使用指针可以更灵活地操作结构体中的成员。结构体指针的定义方式与普通指针一样,例如:
struct student *p;
访问结构体成员时,需要使用“->”操作符,例如:
p = &s;
printf("学生的学号是:%d\n", p->id);
printf("学生的姓名是:%s\n", p->name);
printf("学生的年龄是:%d\n", p->age);
结构体作为函数参数
结构体作为函数的参数时,可以传递结构体变量或结构体指针,例如:
void print_student(struct student s){
printf("学生的学号是:%d\n", s.id);
printf("学生的姓名是:%s\n", s.name);
printf("学生的年龄是:%d\n", s.age);
}
void change_student(struct student *p){
p->id = 10010;
strcpy(p->name, "王五");
p->age = 19;
}
struct student s = {10086, "张三", 18};
print_student(s);
change_student(&s);
print_student(s);
示例一
以下是一个定义和初始化结构体的示例:
#include <stdio.h>
struct student{
int id;
char name[20];
int age;
};
int main(){
struct student s1 = {10086, "张三", 18};
struct student s2 = {10010};
struct student s3 = {.name = "李四", .age = 20};
printf("学生1的学号是:%d,姓名是:%s,年龄是:%d\n", s1.id, s1.name, s1.age);
printf("学生2的学号是:%d,姓名是:%s,年龄是:%d\n", s2.id, s2.name, s2.age);
printf("学生3的学号是:%d,姓名是:%s,年龄是:%d\n", s3.id, s3.name, s3.age);
return 0;
}
输出结果如下:
学生1的学号是:10086,姓名是:张三,年龄是:18
学生2的学号是:10010,姓名是:,年龄是:0
学生3的学号是:0,姓名是:李四,年龄是:20
示例二
以下是一个使用结构体指针修改结构体成员的示例:
#include <stdio.h>
#include <string.h>
struct student{
int id;
char name[20];
int age;
};
void change_student(struct student *p){
p->id = 10010;
strcpy(p->name, "王五");
p->age = 19;
}
int main(){
struct student s = {10086, "张三", 18};
printf("修改前,学生的学号是:%d,姓名是:%s,年龄是:%d\n", s.id, s.name, s.age);
change_student(&s);
printf("修改后,学生的学号是:%d,姓名是:%s,年龄是:%d\n", s.id, s.name, s.age);
return 0;
}
输出结果如下:
修改前,学生的学号是:10086,姓名是:张三,年龄是:18
修改后,学生的学号是:10010,姓名是:王五,年龄是:19
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中的结构体的入门学习教程 - Python技术站