1. 一维数组的创建和初始化2. 一维数组的使用3. 一维数组在内存中的存储4. 二维数组的创建和初始化5. 二维数组的使用6. 二维数组在内存中的存储7. 数组越界8. 数组作为函数参数9. 数组的应用实例 1 :三子棋10. 数组的应用实例 2 :扫雷游戏
1. 一维数组的创建和初始化。
1.1 数组的创建
数组是一组相同类型元素的集合。
数组的创建方式:
type_t arr_name [ const_n ];//type_t 是指数组的元素类型//const_n 是一个常量表达式,用来指定数组的大小
数组创建的实例:
// 代码 1int arr1 [ 10 ];// 代码 2int count = 10 ;int arr2 [ count ]; // 数组时候可以正常创建?// 代码 3char arr3 [ 10 ];float arr4 [ 1 ];double arr5 [ 20 ];
注: 数组创建,在 C99 标准之前, [] 中要给一个 常量 才可以,不能使用变量。在 C99 标准支持了变长数组的概念。
1.2 数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。
看代码
int arr1 [ 10 ] = { 1 , 2 , 3 };int arr2 [] = { 1 , 2 , 3 , 4 };int arr3 [ 5 ] = { 1 , 2 , 3 , 4 , 5 } ;char arr4 [ 3 ] = { 'a' , 98 , 'c' };char arr5 [] = { 'a' , 'b' , 'c' };char arr6 [] = "abcdef" ;
数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。但是对于下面的代码要区分,内存中如何分配。
char arr1 [] = "abc" ;char arr2 [ 3 ] = { 'a' , 'b' , 'c' };
1.3 一维数组的使用
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include <windows.h>
#include<math.h>
int main() {
int arr[10] = { 0 };
int size = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (int i = 0; i < 10; i++) {
arr[i] = i;
}
for (int i = 0; i < 10; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
总结 :1. 数组是使用下标来访问的,下标是从 0 开始。2. 数组的大小可以通过计算得到。int arr [ 10 ];int sz = sizeof ( arr ) / sizeof ( arr [ 0 ]);
1.4 一维数组在内存中的存储
数组在内存中是连续存放的。
2. 二维数组的创建和初始化
2.1 二维数组的创建
// 数组创建int arr [ 3 ][ 4 ];char arr [ 3 ][ 5 ];double arr [ 2 ][ 4 ];
2.2 二维数组的初始化
// 数组初始化int arr [ 3 ][ 4 ] = { 1 , 2 , 3 , 4 };int arr [ 3 ][ 4 ] = {{ 1 , 2 },{ 4 , 5 }};int arr [][ 4 ] = {{ 2 , 3 },{ 4 , 5 }}; // 二维数组如果有初始化,行可以省略,列不能省略
2.3 二维数组的使用
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include <windows.h>
#include<math.h>
int main() {
int arr[3][4] = { 0 };
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
arr[i][j] = i * 4 + j;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", arr[i][j]);
}
printf("-------------");
}
return 0;
}
2.4 二维数组在内存中的存储
二维数组在内存中也是连续存储的
3. 数组越界
数组的下标是有范围限制的。
数组的下规定是从 0 开始的,如果数组有 n 个元素,最后一个元素的下标就是 n-1 。
所以数组的下标如果小于 0 ,或者大于 n-1 ,就是数组越界访问了,超出了数组合法空间的访问。
C 语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,
所以程序员写代码时,最好自己做越界的检查。
4. 数组作为函数参数
往往我们在写代码的时候,会将数组作为参数传个函数,比如:我要实现一个冒泡排序(这里要讲算法思想)函数将一个整形数组排序。
本文含有隐藏内容,请 开通VIP 后查看