C语言从入门到入土---数组

发布于:2022-12-16 ⋅ 阅读:(370) ⋅ 点赞:(0)
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 是一个常量表达式,用来指定数组的大小
数组创建的实例:
// 代码 1
int arr1 [ 10 ];
// 代码 2
int count = 10 ;
int arr2 [ count ]; // 数组时候可以正常创建?
// 代码 3
char 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 后查看