一、结构体的使用
1.为什么使用结构体
常见的变量类型,如int float 等,只能储存一个变量。
而数组虽然可以储存多个变量,但是变量的类型却是相同的。
那么如何定义一个变量类型,使它可以储存多个不同类型的变量呢?有一种方法就是使用结构体。
2.结构体的使用方法
#include <stdio.h>
struct student{
char *name;
int age;
long number;
};
int main(int argc, const char * argv[]) {
struct student mingming={"xiaoming",18,20190911};
printf("%s %d %ld",mingming.name,mingming.age,mingming.number);
return 0;
}
注意:
1.在定义结构体的时候,结构体的最后要用分号
2.结构体定义时,并不占内存,因此也不能赋值。
二、两种方法使用结构体中的内容
1.“.”使用点(如上一个例子中那样)
2.利用指针
#include <stdio.h>
struct student{
char *name;
int age;
long num;
};
int main(int argc, const char * argv[]) {
struct student lihua={"lihua",18,222019806044053};
struct student *p=&lihua;
p->age=33;
printf("%d\n",p->age);
printf("%ld",lihua.num);
三、结构体的大小
一个char为8,一个int为4,一个long为8.那么student的大小,不应该是20吗?怎么程序运行结果为24呢?
那是因为,struct的大小有两个特点:
1.struct中,小类型的存储空间大小会像大类型转化。
2.小类型转化时,若可以拼接成一个大类型的空间,那么他们会优先拼接起来转化
比如像这样:
long的大小是8,原本int 应该转化为8,但是由于两个int正好为8,所以他们就拼在一起,总大小为8.
再比如:
char+float小于8(int),所以两个拼接起来,占8,总共为16.