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
相关文章推荐
- c语言 结构体 、数组的使用,定义的同时必须初始化,否者它们成员的数值会错乱,不是想象的样子
- 我也要学C语言-第十九章:结构体的定义和初始化
- <C语言>结构体的各种定义、初始化、操作代码实例----注释详解
- C语言_结构体的4种定义初始化方式及案例
- 结构体定义和初始化
- C语言练习 结构体的初始化
- C语言中的结构体,结构体中数组初始化与赋值
- 结构体定义的时候,变量进行初始化必须在函数里面进行
- C语言中的初始化及内存分配
- c语言中:结构体的内存分配
- 关于结构体的定义与初始化
- C语言中结构体(struct)乱序初始化
- c语言结构体定义以及引用
- C语言中结构体指针的定义和引用
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- C语言之结构体和共同体——结构体的定义和使用
- C语言结构体初始化出现 too many initializer values 问题
- C语言中的const、extern及结构体、联合体的定义
- 结构体的定义及初始化
- 2-结构体的最后一个成员的定义-C语言中的柔性数组-