结构体
结构体顾名思义就是一个整体,里面包含着各种各样的数据,而这些数据是由程序员自己设置的。设置结构体的一般形式就是:struct 结构体名
{成员};
(注意大括号后面是有分号的,不然你查错的时候会很痛苦,别问我怎么知道的)。
先来个栗子玩一下:
struct family
{
int num;
char a[10];
int Age;
};
这里我创建了一个叫做family的结构体,里面的成员有一个int类型数据和一个char类型的数组,那么我们声明结构体的时候系统是不分配储存空间的,当我们创建结构体变量的时候系统才会分配储存空间,定义变量的方式有三种:
01
先声明结构体类型,再定义该类型变量
上文声明了family的结构体类型,可以用它来定义变量。struct family t1,t2;这种形式和创建基本数据类型变量是相似的。这样则创建了两个family类型的变量t1,t2,它们具有struct family类型的结构。02
在声明类型的同时定义变量
struct family
{
int num;
char a[10];
int Age;
}t1,t2;
03
不指定类型名直接定义结构体类型变量
结构体无名,在声明的时候定义变量(这种一般不建议使用,因为如果要使用这个结构体时只能依靠这个定义的变量来使用)struct
{
int num;
char a[10];
int Age;
}t1,t2;
在设置结构体内部的数据也是设计者需要注意的:
就拿我这里的栗子来说,如果我要创建一个family类型的变量,所需要的储存空间如下图所示:
⚪代表num占的空间,▷代表a[10]占的空间,▯代表Age所占的空间,而所有格子代表这个变量所占的空间,所以这个变量占30个字节,而我们把结构体设置成:
struct family
{
int num;
int Age;
char a[10];
};
那么变量所占空间的图示就是一下那样:
这里的变量只占了20个字节。同一个结构体,变量设置的位置不同会影响分配的储存空间的大小,所以如何合理分配成员也是需要设计者去思考的。
与其他数据类型一样,结构体也可以设置结构体数组,例如:struct family a[10];这里就设置了一个大小为10的结构体数组。
在结构体变量调用结构体的成员时,用“.”来进行调用,例如我设置了一个t1变量,要调用num成员:
t1.num;
也可以设置结构体指针用“->”来进行成员的调用:
struct family t1;
struct family *y;
y=&t1;
printf(“%d”,y->num);
//或者printf(“%d”(*y).num);
结构体变量之间是可以进行互相赋值的,前提是两个变量都属于同一类,就算数据成员一样,但是类不同也是不能进行赋值的。
—EasyProgram公众号平台—
文章:何泽邦
初审:方湘琪
复审:曾煜
编辑:方湘琪
图片:原创