C - 结构体

目录

一、结构体的声明

1.结构

2.结构的声明

3.结构成员的类型

4.结构体变量的定义和初始化

二、结构体成员的访问

.     结构体.成员名

 ->   结构体->成员名(应用于指针)

 三、结构体传参


一、结构体的声明

1.结构

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

与数组对比:数组是一组相同类型元素的集合。

2.结构的声明

struct tag   //struct是结构关键字
    {
        member - list;  //成员变量
    }variable-list;

3.结构成员的类型

结构的成员可以是标量、数组、指针、甚至可以是其他结构体。 

4.结构体变量的定义和初始化

//例如描述一个学生
struct stu
{
	char name[20];//姓名
	int age;//年龄
	char id[20];//学号
}s1,s2;//定义结构体变量s1,s2
struct point
{
	struct stu s;
	int x;
	int y;
};
int main()
{
	//用stu这个类型创建一个学生变量
	struct stu a;//定义结构体变量a
	struct stu s = { "zhangsan",20,20221314 };//初始化
	struct point i = { { "zhangsan",20,20221314 },12,13 };//结构体嵌套初始化
	return 0;
}

二、结构体成员的访问

结构成员访问操作符:

.     结构体.成员名

使用点操作符(.)访问结构变量的成员。

 ->   结构体->成员名(应用于指针)

使用结构体指针访问结构变量的成员。

 三、结构体传参

struct stu
{
	char name[20];//姓名
	int age;//年龄
};
void printfl(struct stu s)
{
	printf("%s %d\n", s.name, s.age);
}
void printf2(struct stu* s)
{
	printf("%s %d\n", s->name, s->age);
}
int main()
{
	struct stu s = { "lisi",18};
	printfl(s);//传值调用
	printf2(&s);//传址调用
	return 0;
}

输出:lisi 18
           lisi 18

printf1和printf2函数,哪个更好呢?

printf2。

原因:函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销就比较大,所有会导致性能的下降。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值