C/C++——结构体

10.1.1 结构体的定义

1.结构体定义的一般形式。

struct 结构体名(结构体类型名)
{
​	数据类型 成员名 1;
​	数据类型 成员名 2;
​	数据类型 成员名 3;
};
struct Student(结构体类型名)
{int num;char name[20];char sex[3];
//char name[20],sex[3];也可以这么写。int age;float score;	
};

说明:
结构体变量才分配地址,结构体定义并不分配内存空间。

2.结构体可以嵌套定义,即成员可以属于另外一个结构体。

struct Date
{int year;int month;int day;
};
struct Student
{int num;char name[20];char sex[3];int age;float score;struct Date birthday;
//结构体Date必须在结构体Student之前定义。
};

3.全局变量。局部变量。

在一个函数内定义是局部的。
在一个函数外定义是全局的。

4.结构体定义的第二种形式。宏定义形式。

#define 宏名 结构体名
宏名
{
​	数据类型 成员名 1;
​	数据类型 成员名 2;
​	数据类型 成员名 3;	
}#define STU struct Student
STU
{int num;
};

10.1.2结构体变量的定义。分配存储空间。

结构体变量有3种方法。

(1)间接定义——先定义结构体,再定义结构体变量。

特点:定义类型后可以随时定义变量,比较灵活。

struct Student(结构体类型名) stu1, stu2;
#define STU struct Student
STU
{
	int num;
}
STU stu1,stu2;

(2)定义结构体的同时定义结构体变量。

struct 结构体名
{
​	数据类型 成员名 1;
​	数据类型 成员名 2;
​	数据类型 成员名 3;
}变量名1,变量名2,变量名3;

struct Student
{int num;char name[20];char sex[3];int age;float score;	
}stu1,stu2;

(3)直接定义结构体变量而不指定结构体名。不出现结构体名,因此不能用结构体去定义其他变量。

struct
{...
}变量名1,变量名2,变量名3;

结构体变量的存储。
一个结构体变量所占用内存空间的字节数可以用长度运算符sizeof算出。

struct Student
{int num;char name[20];char sex[3];int age;float score;char school[20];char add[30];	
}stu1;

sizeof(stu1)=4+20+3+4+4+20+30=85B

10.1.3结构体变量的使用

1.结构体变量的引用

(1)成员不属于另一个结构体,只是普通变量。
"."是成员运算符,在所有运算符中优先级最高。
(2)成员本身又是一个结构体,要用若干个“.”,必须找到最低级的成员才能使用。
比如:stu1.birthday.month

2.结构体变量的初始化

struct Student
{int num;char name[20];char sex[3];int age;float score;char school[20];char add[30];	
}stu1;
struct Student stu1 = {181110065,"泥煤"... };

3.结构体变量的赋值

(1)对到那个成员进行赋值
stu1.num = 181110065;
char name[20];
strcpy(stu1.name,“泥煤”);

4.结构体变量的输入与输出

scanf("%d %s",&stu1.num,stu1.name);
字符数组,首地址即名字

10.1.4

1.结构体数组的定义、引用和初始化

(1)结构体数组的定义。

struct 结构体名 结构体数组名[元素个数];
struct Student 
{
	int num;
	char name[20];
	float score[3];
};
struct Student stu[3];

定义了一个结构体数组stu,共有3个元素。每个数组元素都具有struct Student 的结构形式。
(2)结构体数组的引用。
stu[0].num
(3)结构体数组的初始化。
struct Score stu[3] = {{},{}};
注意:结构体数组要在定义时就直接初始化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值