c语言中结构体的定义、初始化及内存分配

时间:2024-01-11 21:19:44
#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\n",sizeof(p1)); p1.name = "jack";
p1.age = ; printf("p1.name = %s\n",p1.name);
printf("p1.age = %d\n",p1.age); struct person p2 = {"rose",}; printf("p2.name = %s\n",p2.name);
printf("p2.age = %d\n",p2.age); /*
错误的赋值
结构体只能在初始化的时候使用大括号的方式赋值
这点跟数组类似,声明时p3已经分配内存地址,
p3是地址常量,是不可以重新赋值的
struct person p;
p={"name",10};
*/ return ;
}

结果

sizeof(p1)=
p1.name = jack
p1.age =
p2.name = rose
p2.age =