#include <stdio.h> struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数外 //相当于全局变量与局部变量 // struct person // { // char *name; // int age; // }; struct person p1; //补齐算法,分配的存储空间为结构体中占用内存最大成员所占用内存的整数倍 //person结构体中占用内存最大的成员为指针,占用8个字节, //另一个成员int占用4个内存, //所以结构体person所定义变量占用的内存为16字节 printf("sizeof(p1)=%lu ",sizeof(p1)); p1.name = "jack"; p1.age = 18; printf("p1.name = %s ",p1.name); printf("p1.age = %d ",p1.age); struct person p2 = {"rose",20}; printf("p2.name = %s ",p2.name); printf("p2.age = %d ",p2.age); /* 错误的赋值 结构体只能在初始化的时候使用大括号的方式赋值 这点跟数组类似,声明时p3已经分配内存地址, p3是地址常量,是不可以重新赋值的 struct person p; p={"name",10}; */ return 0; }
结果
sizeof(p1)=16 p1.name = jack p1.age = 18 p2.name = rose p2.age = 20