黑马程序员———C语言 结构体
2015-11-02 16:28
357 查看
------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------
一 构造数据类型
1.构造数据类型定义:根据已经定义的一个或多个数据类型用构造的方法来定义。
2.构造数据类型分为:数组类型
结构类型 共用体类型。
二 结构体
1.结构体定义:由相同类型或者不同类型的数据用构造方法构造的类型。
2.结构体书写格式:struct 结构体名{
成员列表;
};
3.结构体定义的作用:把功能相同的数据组织,存在一起,用的时候更方便,并且在调用函数时,如果传递的参数较多,传递一个结构体而言更简单点,很多系统自带的函数必须用结构体。
4.定义结构体变量的3种方法
1)先定义结构体,然后在定义结构体变量。
格式:
struct
结构体名{
成员列表;
};
struct 结构体名
结构体变量名;
例如:
struct student {
int age;
int sex;
......;
};
struct
student stu;//定义结构体变量
2)定义结构体的同时,定义结构体变量。
格式:struct
结构体名 结构体变量名
struct 结构体名{
成员列表;
}结构体变量1,结构体变量2....;
例如:
struct student {
int age;
int sex;
......;
}stu;
3)使用匿名结构体定义结构体变量。
struct {
成员列表;
}结构体变量1,结构体变量2....;
5.访问结构体成员
格式:结构体变量名.成员名
6.结构体变量的初始化
1)先定义结构体变量,再初始化
struct student {
int age;
int num;
......;
};
struct student stu;
stu.age=18;
stu.num=20;
2)定义结构体变量的同时,进行初始化。初始化的顺序要和定义结构体的顺序一致。
struct student {
int age;
int sex;
......;
}stu1,stu2,stu3;
struct
student stu1={18,女,21,男,20,女};//按照顺序来初始化
3)定义结构体变量的同时,还可以指定元素的初始化。
struct student stu3={.age=18};//指定元素的初始化
注意:结构体定义完成后,计算机并不会给结构体分配内存空间,会在定义结构体变量后,分配存储空间。
7.结构体变量存储的原理
结构体占用的内存空间是每个成员占用的字节数之和(考虑对其问题)。
考虑对其问题的意义:a.简化了处理器与内存之间传输系统的设计
b.提升读取数据的速度
步骤:找对齐模数(是结构体中的基本数据类型中占用字节数最大的那个)
再去加大小
比较是否对齐,不对齐的话,在对齐到模数的倍数上
8.结构体作用域
结构体类型定义在函数内部的作用域和局部变量是一致的,函数外部定义的结构体类型类似于全局变量,全局作用域:从定义的那行开始一致到本文件结束。如果在函数内部在定义一个与函数外部同名的结构体,那这个函数内部新定义的结构体,从定义的行数开始,一直到return后面的大括号结束,所以会暂时屏蔽函数外部定义的全局结构体。如果要把这个函数内部新定义的结构体如果放在代码块里面,就不会屏蔽局外的。
一 构造数据类型
1.构造数据类型定义:根据已经定义的一个或多个数据类型用构造的方法来定义。
2.构造数据类型分为:数组类型
结构类型 共用体类型。
二 结构体
1.结构体定义:由相同类型或者不同类型的数据用构造方法构造的类型。
2.结构体书写格式:struct 结构体名{
成员列表;
};
3.结构体定义的作用:把功能相同的数据组织,存在一起,用的时候更方便,并且在调用函数时,如果传递的参数较多,传递一个结构体而言更简单点,很多系统自带的函数必须用结构体。
4.定义结构体变量的3种方法
1)先定义结构体,然后在定义结构体变量。
格式:
struct
结构体名{
成员列表;
};
struct 结构体名
结构体变量名;
例如:
struct student {
int age;
int sex;
......;
};
struct
student stu;//定义结构体变量
2)定义结构体的同时,定义结构体变量。
格式:struct
结构体名 结构体变量名
struct 结构体名{
成员列表;
}结构体变量1,结构体变量2....;
例如:
struct student {
int age;
int sex;
......;
}stu;
3)使用匿名结构体定义结构体变量。
struct {
成员列表;
}结构体变量1,结构体变量2....;
5.访问结构体成员
格式:结构体变量名.成员名
6.结构体变量的初始化
1)先定义结构体变量,再初始化
struct student {
int age;
int num;
......;
};
struct student stu;
stu.age=18;
stu.num=20;
2)定义结构体变量的同时,进行初始化。初始化的顺序要和定义结构体的顺序一致。
struct student {
int age;
int sex;
......;
}stu1,stu2,stu3;
struct
student stu1={18,女,21,男,20,女};//按照顺序来初始化
3)定义结构体变量的同时,还可以指定元素的初始化。
struct student stu3={.age=18};//指定元素的初始化
注意:结构体定义完成后,计算机并不会给结构体分配内存空间,会在定义结构体变量后,分配存储空间。
7.结构体变量存储的原理
结构体占用的内存空间是每个成员占用的字节数之和(考虑对其问题)。
考虑对其问题的意义:a.简化了处理器与内存之间传输系统的设计
b.提升读取数据的速度
步骤:找对齐模数(是结构体中的基本数据类型中占用字节数最大的那个)
再去加大小
比较是否对齐,不对齐的话,在对齐到模数的倍数上
8.结构体作用域
结构体类型定义在函数内部的作用域和局部变量是一致的,函数外部定义的结构体类型类似于全局变量,全局作用域:从定义的那行开始一致到本文件结束。如果在函数内部在定义一个与函数外部同名的结构体,那这个函数内部新定义的结构体,从定义的行数开始,一直到return后面的大括号结束,所以会暂时屏蔽函数外部定义的全局结构体。如果要把这个函数内部新定义的结构体如果放在代码块里面,就不会屏蔽局外的。
相关文章推荐
- 浅谈C++类--隐式类类型转换
- 黑马程序员———C语言 一维数组
- C++基础——类模板
- Student Information System
- 495个C语言问题(摘录)
- 日志库EasyLogging++学习系列(9)—— 性能跟踪功能
- C++ STL中Map的按Key排序和按Value排序
- C++ delete指针的含义
- 第8周项目3 顺序串算法
- 黑马程序员———C语言 分支语句和循环语句
- (C++)字符串分割
- emacs中c++程序编译执行
- c语言预编译
- C语言6章循环结构
- 求最大子串和
- C++各种头文件及其函数
- 二叉搜索树的后序遍历序列
- c语言怎么会有这么多的作用域?
- MYSQL C++操作
- ——黑马程序员——C语言中的数组(三)