【C语言】入门——数组

目录

​编辑

1.一维数组的创建和初始化

1.1一维数组的创建:

1.2 一维数组的初始化 :

 2.二维数组的创建的初始化

  2.1二维数组的创建:

2.2二维数组的初始化:

 3.数组越界

 4.数组的使用 

4.1一维数组的使用:

4.2二维数组的使用:

4.3数组作为函数参数 

总结: 


1.一维数组的创建和初始化

1.1一维数组的创建:

数组是一组相同类型元素的集合

type_t   arr_name   [const_n]; 
//type_t 是指数组的元素类型 
//const_n 是一个常量表达式,用来指定数组的大小

创建实例:

	int arr[10]; //创建大小为10的整型数组

 注:数组创建,C99之前,数组只能常量表示大小

                        C99之后,引用了变长数组,数组的大小可以用变量表示。

但在vs2022.vs2019都不支持变长数组,变长数组不能初始化,就是不能赋一些值

1.2 一维数组的初始化 :

在创建数组的同时给数组的内容一些合理初始值(初始化)

数组在创建的时候如果不指定大小就得初始化,数组的元素个数根据初始化的内容来确定

数组不完全初始化,剩余的元素默认初始化为0

int arr[5];
int sz = sizeof(arr)/sizeof(arr[0]);  //计算数组大小

 2.二维数组的创建的初始化

  2.1二维数组的创建:

//数组创建
	int arr[2][4];
	char arr[4][5];

2.2二维数组的初始化:

二维数组初始化,可以省略行,但不能省略列

	int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
	//也可以
		int arr[][5] = { {1,2},{2,3},{3,4} };
    int arr[3][4] = {1,2,3,4};

 3.数组越界

数组的下标是有范围限制的。

数组下标从0开始,如果数组有n个元素,最后一个元素的下标就是n-1。

所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。

 4.数组的使用 

4.1一维数组的使用:

int arr[10] = {0};	//不完全初始化
	int sz = sizeof(arr) / sizeof(arr[0]); //计算元素个数
	//初始化	
	for (int i = 0; i < sz; i++)
	{
		arr[i] = i;
	}
	//输出
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);		//0 1 2 3 4 5 6 7 8 9
	}

4.2二维数组的使用:

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]);  //0 1 2 3 4 5 6 7 8 9 10 11
		}
	}

4.3数组作为函数参数 

数组名就是地址,通常来说:数组名是数组首元素的地址

但是有2个例外:

  1. sizeof(数组名),这里的数组名表示的整个数组,计算的是整个数组的大小,单位是字节。
  2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。

除此之外,所有遇到的数组名都是数组首元素的地址。

数组传参的本质是指针,传递的是数组首元素地址

但是形参也可以是数组接收,也可以指针接收。

两个数组要进行交换,只能一个元素一个元素进行交换。利用变量进行循环交换,因为数组名是一个地址,是一个常量值

//void sort(int arr[],int sz)
void sort(int* arr, int sz)

这两种方式传参都可以

总结: 

1.数组再内存中是连续存放的,随着下标的增长,数组元素的地址由低到高

2.数组是使用下标来访问的,下标是从0开始。 

3.数组大小可以通过计算得到

感谢你看到这里,以上是我对数组的简单概括,身为初学者,自知有很多不足和需要改善的说法,怀着对编程热爱的心,望得到指点!!!点亮每一颗星星。

猜你喜欢

转载自blog.csdn.net/m0_67367079/article/details/132630026