一.二维数组的创建和初始化
1.二维数组的创建:
基本语法:type arr_name[常量值][常量值] 如下:
float math[3][5];
- 3表示数组有3行
- 5表示每一行有5个元素(可叫为5列)
- float表示数组的每个元素是单精度浮点类型
- math是数组名,可自定义
2.二维数组的初始化:
1.不完全初始化:
int data1[3][4] = { 1,2,3 }; ——> 只初始化了三个元素,剩下的都为0
int data2[3][4] = { 0 }; ——> 都为0的不完全初始化
2.完全初始化:
int data[2][4] = { 1,2,3,4,2,3,4,5 }; ——> 每个元素都被初始化了
3.按照行初始化:
int data[2][4] = { {2,4},{3,5} }; ——> 每行的前两个元素被初始化
注:初始化时,可以省略行,但不能省略列!如下:
int data[][4] = { 2,4,3,5,3 }; ——>有两行
三.二维数组的使用
1.二维数组的下标:
C语⾔规定,⼆维数组的⾏和列都是从0开始的
可见上述坐标(1,3)打印对应的元素是5,因为下标是从0开始的
2.二维数组如何输入并打印所有元素?如下:
上述代码运用for的嵌套循环来实现数组所有元素的输入和输出
四.二维数组在内存中的存储
和一维数组一样。 把二维数组每个元素的地址打印出来 如下:
上述打印结果可看出:和一维数组一样
- 数组随着下标的增长,地址是由小到大变化的
- 数组在内存中也是连续存放的,并且每两个相邻的元素之间也是相差4(因为⼀个整型是4个字节)
五.C99中的变长数组
以史为鉴:C99之前数组的大小只能使用常量或者常量表达式指定,或者初始化数据以省略数组大小。 如下:
int arr1[5];//对
int arr2[3 + 5];//对
int arr3[8];//对
int n = 10;
int arr4[n];//错误,不能使用变量
但是在C99中引入了变长数组的概念,这时创建数组的时候可以使用变量来指定大小
则: int n = 10;
int arr4[n];//正确,能使用变量
但遗憾的是VS(Vision Studio集成开发环境)中不支持变长数组,需安装小熊猫C++ 其使用了gcc这个编译器(gcc 是支持变长数组的)
以下是小熊猫C++使用变长数组
以下是VS使用变长数组,可看出报错了
注:变长数组的意思是数组的大小可以使用变量指定。但数组一旦创建后,大小就无法改变了
变长数组不能初始化!!!
数组练习:多个字符从两端移动,向中间汇聚
由于个人水平有限,如有不足之处,恳请各位老师指出。谢谢!