【C语言】结构体 [ 编程杂谈 ]
大数据男孩 文章 正文
明妃
{{nature("2022-08-14 17:23:19")}}更新结构体定义方式
关键字:
struct
struct 结构体名称{
基本类型 变量名;
基本类型 变量名;
...
}; // 注意这有 分号
struct Boy {
char name[20];
char gender;
float age;
};
struct Boy {
char name[20];
char gender;
float age;
} boy; // 这样定义不用初始化 boy 为全局变量
struct Boy {
char name[20];
char gender;
float age;
} boy = {
"大数据男孩", // 可以不指定 但顺序要对
.gender = 'A',
.age = 18.5,
}; // 初始化 并 设置默认值
初始化结构体
// 基本初始化
struct 结构体名称 变量名;
struct Boy boy;
// 初始化全部值 值的类型需要对应
struct 结构体名称 变量名 = {
内容,
""
}
struct Boy boy = {
"大数据男孩",
"A",
18.2
}
// 初始化部分值
struct 结构体名称 变量名 = {
.定义结构 = 值,
...
}
struct Boy boy = {
.name = "大数据男孩",
.gender = "A",
}
结构体使用
结构体赋值
结构体变量名.值 = 变量;
boy.name = "大数据男孩";
获取结构体的值
变量 = 结构体变量名.值
float age = boy.age;
结构体的内存占用
[]()
原因:C语言的
内存对齐
[]()
结构体使用
#include <stdio.h>
// 定义结构体
struct Boy {
char name[20];
char gender;
float age;
}; // 注意这里有 分号
int main(){
struct Boy boy; // 初始化结构体
printf("输入姓名:");
scanf("%s",boy.name); // 数组不用 取址符
printf("输入性别:");
scanf("%s",&boy.gender);
printf("输入年龄:");
scanf("%f",&boy.age);
printf("--------信息录入完毕---------\n\n");
printf("基本信息:\n");
printf("姓名:%s\n",boy.name);
printf("性别:%s\n",&boy.gender);
printf("年龄:%.2f\n",boy.age);
return 0;
}
[]()
结构体嵌套
// 日期结构体
struct Date {
int year;
int month;
int day;
};
// 男孩结构体
struct Boy {
char name[20];
char gender;
struct Date date; // 嵌套的 日期结构体
} boy = {
.name = "大数据男孩",
.gender = 'A',
.date = {2020,12,15},
};
访问嵌套结构体
#include <stdio.h>
// 日期结构体
struct Date {
int year;
int month;
int day;
};
// 男孩结构体
struct Boy {
char name[20];
char gender;
struct Date date; // 嵌套的 日期结构体
} boy = {
.name = "大数据男孩",
.gender = 'A',
.date = {2020,12,15},
};
int main(){
printf("姓名:%s\n",boy.name);
printf("性别:%c\n",boy.gender);
// 嵌套的结构体 一层一层的访问
printf("日期:%d - %d - %d",boy.date.year,boy.date.month,boy.date.day);
return 0;
}
[]()
结构体数组
struct Date {
int year;
int month;
int day;
} date[2] = {
{2020,12,15},
{2020,12,16},
};
访问结构体数组
#include <stdio.h>
struct Date {
int year;
int month;
int day;
} date[2] = {
{2020,12,15},
{2020,12,16},
};
int main(){
// 结构体数组
// struct Date date[2] = {
// {2020,12,15},
// {2020,12,16},
// };
// 访问结构体数组的内容
printf("date[0]: %d - %d - %d\n",date[0].year,date[0].month,date[0].day);
printf("date[1]: %d - %d - %d\n",date[1].year,date[1].month,date[1].day);
return 0;
}
[]()
结构体指针
结构体指针
本质是指针
,作用是指向
一个结构体
struct Date date = {
2020,12,15
}; // 定义一个结构体
struct Date *pt; // 定义结构体指针
pt = &date; // 指针 指向 结构体
通过 结构体指针 访问 结构体
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
int main(){
// 先 定义该结构体
struct Date date = {
2020,12,15
};
// 定义该结构体 指针
struct Date *pt;
// 结构体指针 指向 结构体
pt = &date;
// 获取结构体值
printf("year : %d ",date.year); // 结构体 直接 访问
printf("month : %d ",(*pt).month); // 通过 结构体指针 访问,括号必须的(优先级问题)
printf("day : %d\n ",pt -> day); // 结构体指针 箭头 访问
return 0;
}
[]()
{{nature('2020-01-02 16:47:07')}} {{format('12641')}}人已阅读
{{nature('2019-12-11 20:43:10')}} {{format('9527')}}人已阅读
{{nature('2019-12-26 17:20:52')}} {{format('7573')}}人已阅读
{{nature('2019-12-26 16:03:55')}} {{format('5017')}}人已阅读
目录
标签云
一言
评论 0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}