C语言结构体

一、前言

结构体是一些值的集合,因此它和数组很相似
但是有些许不同:
数组中的值,每个值的数据类型是相同的;而结构体中的值,数据类型可以是不同的。

二、结构体的声明

结构体的定义:结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。
结构体的创建:

struct stu
{
  char name[20];
  short age;
}--------
struct stu
{
  
}s1,s2,s3;//s1,s2,s3是三个全局变量结构体变量
--------
typedef struct stu
{
  
}stu;//这个代码将数据类型名改为stu

补充:

1.struct stu等价于int、char等数据类型

2.定义一个结构体类型(此时并没有开辟空间不会占用内存空间);创建一个结构体变量后才会占有空间

用两个方法理解:
a.上面我们说结构体类型等价与int,我们知道单单一个int类型不会占用内存;但是创建一个整型变量a,它会开辟空间int a=10;才会占用空间。
b.创建的结构体类型就像设计房子的图纸;创建结构体变量后才成生成房子,此时才能占用空间

3.这里分号很容易忘记

三、结构体的初始化

一般的结构体初始化

#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
typedef struct stu
{
	char name[20];
	short age;
	char tele[12];
	char sex[5];
}stu;
int main()
{
	stu s1 = {"张三",20,"18228238238","男"};
	stu s2 = {"死狗",18,"13423232451","保密"};
	return 0;
}

补充
结构体的创建可以包含其他结构体(嵌套结构体)
那我们嵌套结构体的初始化

#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
typedef struct stu
{
	char name[20];
	short age;
	char tele[12];
	char sex[5];
}stu;
typedef struct stu1
{
	char ch[10];
	struct stu s;
	char* pc;
}stu1;
int main()
{
	int a = 0;
	stu s1 = {"张三",20,"18228238238","男"};
	stu1 s2 = { "hehe",{"张三",20,"18228238238","男"},&a };
	return 0;
}

说明:嵌套调用的部分用一个{}初始化。

四、访问数据体成员数据

基本知识:结构体成员访问操作符’.‘’->’
用法:变量名.成员名;指针名->成员名;嵌套初始化的成员访问我们需要两个’.‘’.'连用
在这里插入图片描述

五、结构体打印数据

在这里插入图片描述
这个一个比较口语的解答,实际上是因为函数传参调用的时候都是压栈进的,可能导致系统负载过高

六、理解函数传参是会压栈的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、结语

希望大家指出不足之处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

含目的基因的质粒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值