结构体类型
结构体类型是程序中用户自定义的一种数据类型,即结构体类型是一种构造类型,由若干个数据项组合而成,这些数据项称为成员(又称为“域”或“结构分量”),每个成员可以是一个基本数据类型,也可以是一个构造类型。
struct person {
char name;
int age;
int gender;
};
结构体类型仅是一种数据类型,系统不会为其成员分配内存。利用已经定义的结构体类型来定义变量、数组或指针变量时,系统才会为其分配内存。
struct person {
char name;
int age;
int gender;
};
struct people {
struct person Nancy;
};
对结构体类型变量的成员顺序地分配存储空间
#include <stdio.h>
#define NAMESIZE 20
struct date {
int year, month, day;
};
struct person {
char name[NAMESIZE];
struct date birthday;
long zipcode;
};
int main(void) {
struct person p;
// p占用的内存字节数
printf("p的长度%lu\n", sizeof(p));
// person占用的内存字节数
printf("person的长度%lu\n", sizeof(struct person));
return 0;
}
输出:p的长度40,person的长度40。
上例中,当定义结构体类型的变量p时,系统才为其分配内存,所分配的内存字节数等于该结构体类型所有成员占用的字节数之策。而且是按照成员定义时的顺序依次分配给各成员。