您的位置:首页 > 编程语言 > C语言/C++

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

2015-02-10 21:57 435 查看
#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 = 18;

printf("p1.name = %s\n",p1.name);
printf("p1.age = %d\n",p1.age);

struct person p2 = {"rose",20};

printf("p2.name = %s\n",p2.name);
printf("p2.age = %d\n",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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: