目录
数组
一维数组
某种数据类型变量的集合,在一块连续的内存上
1、作用:
方便定义相同数据类型的变量
2、数组框架:
元素的数据类型 变量名[元素个数];
3、数组的定义方式:
4、计算数组内存大小:
数组内存大小==数组元素类型所占字节数*元素个数
5、访问数组元素:
访问数组的元素的下标:0~(数组元素个数-1)
6、数组名和数组的数据类型问题:
=========================================================================
学完数组要掌握的知识点:
1、定义数组
2、给数组赋值
3、把数组数据正确输出
4、数组的大小
5、数组的内存图
=========================================================================
二维数组
1、本质上也是一维数组
只是元素数据类型为一维数组的数组,就叫做二维数组
2、二维数组定义模型
3、二维数组定义和初始化
(1)int a[2][3]; //未初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值为随机值
(2)int a[2][3]={{1, 2, 3}, {4, 5, 6}}; //全部初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:
(3)int a[2][3]={1, 2, 3, 4, 5, 6}; //全部初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:
(4)int a[2][3]={{1}, {4, 5}}; //部分初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:
(5)int a[2][3]={1, 2, 3}; //部分初始化定义,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:
(6)int a[][3]={{1, 2, 3},{4}}; //不定长二维数组,定义了一个二维数组,该数组有两个元素,元素类型为:int()[3]二维数组,定义了一个二维数组,该数组有两个元素,元素类型为:int ()[3],它的值:
4、二维数组的大小
二维数组的大小 == 小数组的元素类型大小*小数组的元素个数*大数组的元素个数== 大数组的元素个数*小数组的数据类型大小
5、数组元素的访问
指针数组
1、概念:
2、定义模型
=========================================================================
指针
一级指针
1、概念:
2、如何定义一个指针变量
模型:被存储变量的数据类型 *变量名
3、 怎么使用指针变量(解引用、取目标)
4、指针内存大小:
5、指针加减-->内存地址加减
int a=100;
int *p=&a;
注意:
指针加减要考虑它存储对象的大小
内存地址加减也要考虑它存储对象的大小
内存地址包括两部分:地址值和存储的对象
6、指针变量数据类型问题
7、通用指针(万能指针)
void *p //通用指针(万能指针),可以合法存储任意一种类型的变量地址,但是存储之后类型会变成void *
注意:通用指针要解引用必须先强制转换类型
8、NULL -->空指针
指针的零值:
int *p; //p里面是随机值,也把这种指针称之为野指针,野指针是非常危险的,所以指针定义后如果未初始化,就赋值为NULL,比较安全
如果对NULL指针解引用会爆段错误:
=========================================================================
二级指针
1、概念:
指针变量用来存储变量内存地址
2、定义模型
一级指针变量类型 *变量名;
3、二级指针的大小:
32位系统占4个字节
64位系统占8个字节
4、二级指针数据类型问题
int **q; q的数据类型为:-->int **
&q的类型为:-->int ***
=========================================================================
数组指针
1、概念:
本质是一级指针,用来存储数组的地址
定义一个相应类型的指针变量合法存储数组地址
2、定义模型:
定义一个相应类型的指针变量合法存储数组地址
模型:
数组的数据类型 *变量名
3、内存大小: