A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 米匠 中级黑马   /  2014-10-14 20:21  /  840 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、结构体的定义
结构体可以由多个不同类型的数据构成。
int main()
{
//定义结构体
struct person
{
int age;
double height;
char *name;
};
//定义结构体变量
struct person p = {20, 1.55, “jack”};
struct person p2 = {.name=”jack”, .age=20; .height=1.55};  //不按顺序赋值
p.age = 30;  //结构体内部变量赋值
p.name = “rose”;
}

定义结构体变量的三种方式如下图:

二、结构体的内存分析
int main()
{
//声明结构体类型,不分配内存空间
struct Date
{
int year;
int month;
int day;
};
struct Date d1 = {2014, 4, 10};
struct Date d2 = {2012, 8, 9};

d2.month = 12;
int size = sizeOf(d1);
printf(“%d\n”, size);  //输出为12 = 4 + 4 + 4,三个int类型长度相加。注意:结构体所占存储空间的个数为最大成员字节数的倍数(补齐算法、对齐算法)
return 0;
}

内存示意图如下:


倘若 d2 = d1;
意味着将d1的所有成员值对应的赋值给d2的所有成员
三、结构体数组
struct RankRecord
{
int no;
char *name;
int score;
}

注意:records[0] = {4, “rose”, 9000};写法是错误的,因为结构体定义不可以使用用变量名单独赋值,变量前应该有结构体类型;所以这种情况应该使用records[0].no = 4;records[0].name = “rose”;records[0].score = 9000;
四、指向结构体的指针

“p->age”也可以用来修改结构体成员变量值。  
五、结构体的嵌套
注意:结构体不可以包含自身作为成员


六、枚举


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马