十、指针
1、指针的定义与使用
1、 指针的基本概念
指针的作用:可以通过指针间接访问内存
内存编号是从0开始记录的,一般用十六进制数字表示
可以利用指针变量保存地址
2、 指针变量的定义和使用
指针变量定义语法:
数据类型 *变量名;
2、指针所占空间
在32(X86)位操作系统下,指针是占4个字节空间大小,不管是什么数据类型
在64(X64)位操作系统下,指针是占8个字节空间大小,不管是什么数据类型

3、空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
0~255之间的内存编号是系统占用的,因此不可以访问
野指针:指针变量指向非法的内存空间
总结:空指针和野指针都不是我们申请访问的空间,因此不要访问
4、const修饰指针
三种情况:
(1)const修饰指针 ···常量指针 const int*p=&a;
(2)const修饰常量 ···指针常量 int * const p=&a;
(3)const即修饰指针又修饰常量 const int*const p=&a;
常量指针特点:指针指向可以修改,但是指针指向的值不可以改
*p=20//指针指向的值不可以改
指针常量特点:指针指向不可以修改,但是指针指向的值可以改
p=&b;//指针指向不可以修改
即修饰指针又修饰常量特点:指针指向不可以修改,但是指针指向的值不可以改
4.指针和数组
作用:利用指针访问数组中元素

5.指针和函数
作用:利用指针做函数参数,可以修改实参的值
值传递;
地址传递。

6、指针、数组、函数
十一、结构体
1、结构体基本概念
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
2、结构体定义和使用
语法:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种:
•struct 结构体名 变量名
•struct 结构体名 变量名={成员1值,成员2值...}
•定义结构体时顺便创建变量

3、结构体数组
作用:将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名[元素个数]={ {},{},{}...}

4、结构体指针
作用:通过指针访问结构体中的成员
利用操作符->可以通过结构体指针访问结构体属性

5、 结构体嵌套结构体
作用:结构体中的成员可以是历经一个结构体
eg:每个老师辅导一名学员,一个老师的结构体中,记录一个学生的结构体

6、结构体做函数参数
作用:将结构体作为参数向函数中传递
传递方式:
(1)值传递
(2)地址传递

总结:如果不想修改主函数中的数据,用值传递,反之用地址传递
7、结构体中const使用场景
作用:用const来防止误操作
