首页 > 代码库 > 黑马程序员-关于结构体
黑马程序员-关于结构体
------- IOS培训、android培训、java培训、期待与您交流! ----------
1 结构体:
作用:可以由多个不同类型的数据构成。
//定义结构体类型,类型为person:(此阶段不会分配存储空间
1 struct person 2 { 3 变量; // 称为结构体变量或属性 4 } 5 //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间) 6 struct person p={ }; // 赋值的时候只能在定义结构体的时候同时赋值
错误写法
struct person p;
p={ };
2. 内存分析:
对齐算法:结构体所占用内存空间的大小,一定是结构体中最大成员所占用存储空间的倍数。
1 struct Student2 {3 int age; // 4个字节4 char *name; // 8个字节5 }stu;
结构体所占用的字节:16个字节(8的倍数);
内存分配:定义结构体类型时不会分配内存空间,只有当赋值的时候才能分配存储空间。
3.结构体类型不能够重复定义
定义结构体变量的三种方式:(从类型和变量进行考虑)
(1)先定义类型(相当于int、double等),再定义变量
1 struct student 2 { 3 int age; 4 }; 5 struct student stu;
(2) 定义类型的同时定义变量
1 struct student 2 { 3 int age; 4 } stu;
(3) 定义类型的同时定义变量,但是省略类型名称
1 struct 2 { 3 int age; 4 } stu;
4.作用域
定义在函数内部:从定义那一行开始,到函数或代码块结束。(跟局部变量一样)
定义在函数外部:从定义那一行开始,到程序结尾。(跟全局变量一样)
5.结构体数组(结构体中定义结构体):
struct student stu[3] = { { },{ },{ } } // 结构体数组中含有三个结构体
数组修改方式:
错误修改:stu[0]={ };
正确修改:stu[0].age=10;
6.指向结构体的指针
struct student *p;
p=&stu;
有三种方法访问结构体属性:
方法1:stu.age;
方法2:(*p).age;//代表指针访问结构体中的age属性
方法3: p->age;//代表指针访问结构体中的age属性 (最常用)
7.结构体嵌套
概念:在结构体中调用结构体。
1 struct names 2 { 3 int ages; 4 int years; 5 }name; 6 struct Student 7 { 8 name *stuname; // 嵌套结构体name 9 int banji; 10 stu;
8.枚举
关键词:enum 其余定义方法和结构体一样
作用:固定变量的取值范围。
注:枚举类型中定义的变量只能取枚举中的属性。
1 enum season 2 { 3 spring=1, // 如果不手工指定spring为1,则spring默认为0 4 summer, 5 }; 6 enum season s= spring;//s只能取spring或summer (枚举值都是整形常量,从0开始,也可以进行手工指定)
黑马程序员-关于结构体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。