c语言-结构体-小白3小时总结

本文介绍了C语言中结构体的使用,包括为什么需要结构体、如何声明和初始化结构体、结构体数组的操作、结构体指针以及在函数中传递结构体的方法。详细讲解了结构体的构建、访问和赋值,以及结构体别名和嵌套结构体的概念。
摘要由CSDN通过智能技术生成

结构

为什么需要结构体

c语言后很多类型 比如 char short int double float long long

再例如比较难的 数组 指针类型

但是你会发现 这些类型都是定死的 就是说int 就是int 不能再放别的

int[] 的数组中只能放 int 的数据

 char name[20]//姓名
 short sex//性别
 int weight//体重
 double height //身高
 //float long long  

但是这很明显 很难满足某些需求 例如人员信息 有身高int 有姓名char[] 有体重int…

我们想要一种 能够直接把多种数据综合起来的数据结构

于是就有了 struct{} 的结构

 struct {
   
     char name[20]//姓名
     short sex//性别
     int weight//体重
     double height //身高
 }
这一大坨就是一个类型  和int 等价

结构体的构建

1.首先 需要struct关键词来声明
2.需要 {
   }  包裹 里面存放这要存储的数据
3.包裹的数据和正常的数据声明一样 比如姓名 char [20] 是一个char[]的字符串
4.数据要有;结尾
struct {
   
     char name[20];//姓名
     short sex;//性别
     int weight;//体重
     double height; //身高 
}

结构体的声明

例如 int a;  类型 名字  
类型 名字
 struct {
   
     char name[20]//姓名
     short sex//性别
     int weight//体重
     double height //身高
 } people;
//people 就是一个变量

结构体数组的声明

和正常数组一样

int a[];
用struct 和int是等价的
 struct {
   
     char name[20]//姓名
     short sex//性别
     int weight//体重
     double height //身高
 } people[20];
创建一个结构体的数组  里面的类型就是 struct

访问和赋值结构体数据

通过 . 访问

struct {
   
     char name[20]//姓名
     short sex//性别
     int weight//体重
     double height //身高
 } people;
//获取
people.name//获得people的name存放的值
people.sex//获得people的sex存放的值
people.weight//获得people的weight存放的值
people.height//获得people的height存放的值
//赋值
people.name="娃哈哈"//把值存放到people.name
strcpy(people.name, "Timmy");//结构体对于字符串的赋值 上面.会报错 建议以使用这个
people.sex=1//把值存放到people.sex
people.weight=23//把值存放到people.weight
people.height=56//把值存放到people.height

之后会有->的访问 简单提一下那是指针的替代 等价 (*people).name people->name

访问和赋值结构体数组数据

通过 [] 和 . 访问

struct {
   
     char name[20]//姓名
     short sex//性别
     int weight//体重
     double height //身高
 } people[20];
//获取
people[0].name//获得people数组的第一个结构体.的name存放的值
people[0].sex//获得people数组的第一个结构体.的sex存放的值
people[0].weight//获得people数组的第一个结构体.的weight存放的值
people[0].height//获得people数组的第一个结构体.的height存放的值
//赋值
people[0].name="娃哈哈"//把值存放到people数组的第一个结构体.name
strcpy(people.name, "Timmy");//结构体对于字符串的赋值 上面.会报错 建议以使用这个
people[0].sex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值