C:结构体(struct)
- 结构体(struct)是一种由一组成员组成的类型,这些成员的存储空间按顺序依次分配(这与共用体(union)不同,共用体的成员存储空间是相互重叠的)。
例如定义一个结构体:
structPerson{charname[50];intage;};- 使用结构体
#include<stdio.h>structPerson{charname[50];intage;};intmain(){structPersons;s.age=28;strcpy(s.name,"Hugo Pang");printf("%d\n",s.age);printf("%s\n",s.name);return0;}运行输出:
- 在结构体对象中,成员(以及位域分配单元)的地址按定义顺序递增。
例如:
#include<stdio.h>structPerson{intage;charname[10];};intmain(){structPersons;s.age=28;strcpy(s.name,"Hugo");//查看地址printf("&s.age = %p\n",&s.age);printf("&s.name = %p\n",&s.name);return0;}输出如下:
- 指向结构体的指针可以转换为指向其第一个成员的指针(如果成员是位域,则转换为其分配单元的指针);指向结构体第一个成员的指针也可以转换回指向整个结构体的指针。
例如,代码如下:
#include<stdio.h>structPerson{intage;charname[10];};intmain(){structPersons;s.age=28;strcpy(s.name,"Hugo");//指向结构体的指针和指向其第一个成员的指针相同printf("&s = %p\n",&s);printf("&s.age = %p\n",&s.age);return0;}运行输出:
