简单易懂的结构体

目录

结构体类型的声明

结构体初始化

结构体成员访问

结构体传参


结构(也叫结构体),是一些值的集合,结构的每个成员可以是不同类型的变量。(用来描述复杂对象)

相比于数组,数组存放的是相同类型的元素

结构体类型的声明

struct tag
{
member-list;
}variable-list;

举个例子: 

 struct Stu
{
   char name[20];    //名字
   int age;                //年龄
   char sex[5];         //性别
} Stu;                   //注意:分号不能丢
结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体

 结构体初始化

运用实例:

#include<stdio.h>

	struct stu
	{
		char name[20];
		int age;
		char sex[10];
		float score;
	};
int main()
{
	struct stu s1 = { "li moumou",25,"nv",98.9f };  //初始化
	struct stu s2 = { "liu moumou",23,"nan",99.9f }; //初始化

	printf("%s %d %s %f\n", s1.name, s1.score);
	printf("%s %d %s %f\n", s1.name, s1.score);
	return 0;
}

通过这种方式,简化了许多,打印起来更加方便

还有一种初始化方式:结构体嵌套初始化,例如:

struct  date
{
   int year;
   int month;
   int day;
 }
struct  date={"2022","11","22"};
sruct world cup
{
  struct date;
  char country[2];
}
struct world cup   = {{2022,11,22}  argentuna,  Saudi arabia  }; // 结构体嵌套初始化

结构体成员的访问

1.结构体变量访问成员 ,是通过点操作符(.)访问的。点操作符接受两个操作数

2.结构体指针访问指向变量的成员 ,看作指向一个结构体的指

1.
printf("name = %s   age = %d\n", (*ps).name, (*ps).age);
2.
printf("name = %s   age = %d\n", ps->name, ps->age);

结构体传参

结构体传参的时候,要传结构体的地址。

struct S
{
int data[1000];
int num;
};
struct S s = {{1,2,3,4}, 1000};//结构体传参
void print1(struct S s)
{
printf("%d\n", s.num);
}
//结构体地址传参
void print2(struct S* ps)
{
printf("%d\n", ps->num);
}
int main()
{
print1(s);  //传结构体
print2(&s); //传地址
return 0;
}
首选print2函数,函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的 下降。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

看着不爽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值