8、结构体类型——对象

103 阅读1分钟

结构体类型

结构体类型是程序中用户自定义的一种数据类型,即结构体类型是一种构造类型,由若干个数据项组合而成,这些数据项称为成员(又称为“域”或“结构分量”),每个成员可以是一个基本数据类型,也可以是一个构造类型。

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时,系统才为其分配内存,所分配的内存字节数等于该结构体类型所有成员占用的字节数之策。而且是按照成员定义时的顺序依次分配给各成员。