结构体是C/C++中常用的构造类型
在c语言中,数据类型分为基本类型(int、double、float、short、long、char)和构造类型(数组,结构体,共用体和枚举)。
我们在构建代码时,往往同种属性的变量并不属于同种基本数据类型,这样使得数组不能够满足我们当前的需求,所以结构体和共用体就应运而生了。今天我们主要讲结构体的应用。
结构体所占内存应该是大于等于成员所占内存总和。这涉及到字节对齐,这方面也是一个比较重要的点,我们在以后会详细介绍。并且各个成员在内存中的储存是连续的。
一、定义
结构体的成员可以是基本的数据类型,也可以是构造类型,相对来说比较自由。
1、结构体定义的一般形式如下所示:
struct 结构体名 {
类型名1 成员名1;
类型名2 成员名2;
...
类型名n 成员名n;
};
举例:
struct student {
char name[10];
float score;
int num;
};
2、定义并声明结构体变量:
struct 结构体名 {
类型名1 成员名1;
类型名2 成员名2;
...
类型名n 成员名n;
}变量1,变量2,...;
举例:
struct student {
char name[10];
float score;
int num;
}stu1,stu2;
3、定义结构体并赋初值:
struct 结构体名 {
类型名1 成员名1;
类型名2 成员名2;
...
类型名n 成员名n;
}数组[2]={
{a,b,...,n},
{a1,b1,...,n1}
};
举例:
struct student {
char name[10];
float score;
int num;
}stu[2]={
{"tom",95.5,4},
{"jhon",93,3}
};
二、声明
在声明的时候加上关键字“struct”。
1、声明的一般形式
struct 结构体名 变量1,变量2;
举例:
struct student stu1,stu2;
2、声明时赋初值
struct 结构体名 变量1 = {a,b,...,n},变量2;
举例:
struct student stu1 = {"tom",95.5,4},stu2;
三、程序例程
#include<stdio.h>
//定义
struct student {
char *name;
float score;
int num;
};
int main()
{
struct student stu;//声明结构体
stu.name = "Tom";//赋值
stu.score = 95.5;
stu.num = 4;
printf("%s,%0.1f,%d",stu.name,stu.score,stu.num);
}