前言:大家好😍,本篇主要介绍了C语言结构体部分的内容
🌸格格Code的C语言🌸有关C语言的知识点都在这里,大家可以看看对自己有没有帮助🙋🙋🙋
一、结构体类型的声明
1.1 结构体的基础知识
概念:结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。结构体是用户自定义的一种数据类型,可以将不同类型的数据组合在一起,形成一个逻辑上的整体。
数组是一组相同类型元素的集合
类型:char,int,short,double这些都叫内置类型,只可以用来表示一些简单的对象,例如表示成绩用(float)类型,表示学号用(int)类型。只能表示一些单独的值。
但是在生活中,有许多的复杂对象。例如:表示人:名字(char)+电话(int)+身(double)等相关属性。这些数据如果单独定义会很复杂,所以我们对复杂对象进行整体的描述时就会使用的到结构体。
1.2 结构体的声明
struct tag //结构体名称
{
member-list; //成员列表
}varible-list; //变量列表
struct是结构体关键字
tag是结构体名称
struct tag 结构体类型
类比建房子:结构体不占用内存空间相当于图纸 主函数占空间相当于房子
1.3 结构体成员类型
结构体的成员可以是标量,数组,指针,甚至是其他结构体
1.4结构体变量的定义和初始化
🌸1)先定义结构体类型,再定义结构体变量
struct student { //定义结构体类型
//结构体成员列表
char name[20];
char num[12];
char sex[5];
int high;
};
struct student stu1,stu2; //定义结构体变量
🌸2)定义结构体类型的同时定义结构体变量
struct student { //结构体类型
//结构体成员
char name[20];
char num[12];
char sex[5];
int high;
}stu1,stu2; //结构体变量
🌸3)直接定义结构体变量
struct //结构体类型
{
//结构体成员
char name[20];
char num[12];
char sex[5];
int high;
}stu1,stu2; //结构体变量
二、结构体初始化
struct Peo p1 = { "张三", "15596668862", "男", 181 }; //定义并初始化成员
struct St s = { {"lisi", "15596688888", "女", 166}, 100, 3.14f };
三、结构体成员访问
3.1 通过点操作符(.
)访问结构体变量的成员
结构体变量.成员名
#include <stdio.h>
// typedef为结构体定义别名
typedef struct {
char name[50];
int age;
float height;
} Person; //别名Person结构体类型
int main() {
// 创建一个 Person 类型的变量 person,并初始化
Person person = {"John Doe", 30, 1.75};
// 使用点操作符访问结构体变量的成员
printf("Name: %s\n", person.name); // 访问并打印姓名
printf("Age: %d\n", person.age);
printf("Height: %.2f meters\n", person.height); //
// 修改结构体变量的成员
person.name = "Jane Doe"; // 修改姓名
person.age = 25;
person.height = 1.65;
// 再次使用点操作符访问结构体变量的成员
printf("%s\n", person.name); // 访问并打印更新后的姓名
printf(" %d\n", person.age);
printf(" %.2f meters\n", person.height);
return 0;
}
#include <stdio.h>
// 定义结构体类型 Peo
struct Peo {
char name[20];
char tele[12];
char sex[5];
int high;
};
// 定义结构体类型 St,它包含一个 Peo 类型的成员 p
struct St {
struct Peo p;
int num;
float f;
};
int main() {
// 定义并初始化结构体变量 p1
struct Peo p1 = {"张三", "15596668862", "男", 181};
// 定义并初始化结构体变量 s
struct St s = {{"lisi", "15596688888", "女", 166}, 100, 3.14f};
// 打印 p1 的成员信息
printf("%s %s %s %d\n", p1.name, p1.tele, p1.sex, p1.high);
// 打印 s 的成员信息
printf("%s %s %s %d %d %f\n", s.p.name, s.p.tele, s.p.sex, s.p.high, s.num, s.f);
return 0;
}
输出:
张三 15596668862 男 181
lisi 15596688888 女 166 100 3.140000⚠️使用
printf
函数打印s
的所有成员信息,注意s.p
用于访问s
中Peo
类型的成员p
。
3.2 通过箭头操作符(—>)访问结构体变量的成员
#include <stdio.h>
struct Peo {
char name[20];
char tele[12];
char sex[5];
int high;
};
// 定义结构体类型 St,包含一个 Peo 类型的成员 p
struct St {
struct Peo p;
int num;
float f;
};
void print1(struct Peo p) {
printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);
}
void print2(struct Peo* sp) {
printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high);
}
int main() {
struct Peo p1 = { "张三", "15596668862", "男", 181 };
//定义并初始化成员
struct St s = { {"lisi", "15596688888", "女", 166}, 100, 3.14f };
print1(p1); // 调用 print1 函数打印 p1 的成员信息
print2(&p1);
return 0;
}
输出:
张三 15596668862 男 181
张三 15596668862 男 181⚠️函数
void print2(struct Peo* sp)
的定义表示这是一个名为print2
的函数,它接受一个参数sp
。这个参数是一个指向struct Peo
结构体类型的指针。⚠️
* sp
:星号表示sp
是一个指针,它存储了Peo
结构体实例的内存地址。⚠️函数体内部可以使用指针
sp
来访问和操作它所指向的结构体实例的成员。由于sp
是一个指针,所以在访问结构体成员时需要使用箭头操作符(->
)而不是点操作符(.
)。⚠️print2(&p1):
p1
是一个结构体变量,&p1
则表示获取p1
这个结构体变量的内存地址。
四 、结构体传参
总结
提示:本篇知识结构体简单部分的内容,有点难度的还未更新,之后会继续上传!谢谢大家阅读!🌸🌸🌸
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟