C 初阶结构体

目录

一、结构体的声明

1、结构体的声明

2、结构体变量的定义和初始化

二、结构体成员的访问

1、用点操作符(.)访问

2、用指针访问

结构体传参:


结构:结构是一些值的集合,这些值称为成员变量

eg:数组是一种相同元素的集合,而结构不是

int、float等类型为内置类型,而当我们需要描述一个复杂对象时,用一个简单类型显然不够方便,结构体的出现就是为了描述复杂对象

一、结构体的声明

1、结构体的声明

//声明一个名为person的结构体
struct prson
{
	char name[20];
	char tele[20];
	char sex[10];
	int height;
}p1, p2;//这里的分号不能去掉,分号前面可加可不加变量名(如果有多个对象,则可以在这里加)
//如果需要有多个对象,则需要加对象名
//这里p1和p2是使用person结构体创建的变量,且为全局变量,因此不推荐在此创建

 结构体成员可以是变量、数组、指针等,甚至是另一个结构体(注意:如果包含了其它结构体,那么引用的结构体需要先被创建)

2、结构体变量的定义和初始化

struct person
{
	char name[20];
	char tele[20];
	char sex[10];
	int height;
}; 

struct student
{
	struct person;//这里可以不加结构名,如果加了(比如p3),后面访问的时候要带上结构名
	int No;
	float grade;
};

int main()
{
	struct person p1 = { "zhangsan","123456789123","male",180 };
	//结构体变量的创建和初始化
	struct student p2 = { {"lisi","987654321123","female",170},02,200.0 };
    //里面的大括号可以去掉
	//含有结构体的结构体变量的创建和初始化
	//注意:浮点数在内存中不能精确保存,可能会有误差

    return 0;
}

也可以不完全初始化(即只初始化一部分内容)

二、结构体成员的访问

1、用点操作符(.)访问

printf("%s %s %s %d\n", p1.name, p1.tele, p1.sex, p1.height);
printf("%s %s %s %d %d %.2f\n", p2.name, p2.tele, p2.sex, p2.height, p2.No, p2.grade);
//如果上面在引用另一个结构体的时候写了变量名(比如p3),这里要加上,如p2.p3.name
printf("%s %s %s %d %d %.2f\n", p2.p.name, p2.p.tele, p2.p.sex, p2.p.height, p2.No, p2.grade);

2、用指针访问

//接收传过来的地址
void print2(struct person* p)
{
	printf("%s %s %s %d", p->name, p->tele, p->sex, p->height);
}

如果在调用函数时括号内放参数名,而不是地址,则需要用形参接收,用(.)访问

结构体传参:

结构体传参,可以用传结构体和传地址的形式,但一般用传地址的形式

当结构体所占空间比较大的时候,传结构体会造成空间和时间(拷贝结构体需要时间)的浪费

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值