赞
踩
数组是由一组数据类型相同的元素组成的集合
当我们声明了数组之后,我们的编译器会根据
信息正确地创建数组
引用数组可以存储大量元素,便于定义很多个
变量,并给它一次性初始化(赋值),我们的一
维数组可以模拟直线(线性表),二维数组可以
模拟一个平面,而三维数组模拟是立体,而多维
数组可以模拟我们看不到的事物,
数组还有个局限性数组,数组下标是个固定值只
能人为去设定一个值
数组的索引号永远比数组元素的位数少1,这是
因为数组索引号(下表)从0开始
数组的索引号一定要大于0,索引号里可以是常
量表达式,例如:float a2[5*2 + 1]
数组名是是数组的首地址,因为只要我们知道首
地址,则我们就会知道这个数组里的所有元素
怎样定义一维数组
为n个变量连续分配空间
所有的变量数组类型必须相同
所有的变量所占字节大小必须相等
例如 :
int [5];定义5个为int的型变量的数组元素
有关一维数组的操作
初始化:(就是给每个元素赋值,因为不初始化刚分配的内存空间都是一些垃圾值)
格式:数组名[元素个数] = {元素集合}
例如 :int a[5] = {1,2,3,4,5};
完全初始化
int a[5] = {1,2,3,4,5};
不完全初始化,未被初始化的值全为0
int a[5] = {1,2,3};
不初始化,所有元素都是垃圾值
Int a[5];
清零
Int a[5] = {0};
错误写法:
int [5]; //
a [5] = {1,2,3,4,5}; //定义之后再使用就相当于使用a[5]这个元素(也没有这个元素,超出范围了)
只有在定义数组的同时才可以整体赋值
其他情况全部是错误,
Int a[5] = {1,2,3,4,5};
a[5] = 5;//错误,因为数组最大是a[4]
数组下标是从0开始的
Int a[5] = {1,2,3,4,5};
Int b[5];
如果要把a数组中的值全部赋给b数组
错误写法:
b = a;//error
正确写法:
for(i=0; i<5; i++)
b[5] = a[5];
如下代码为一维数组的初始化及输出
- # include <stdio.h>
- /*
- 一维数组的初始化和输出
- */
- int main(void)
- {
- int a[5]; //定义一维数组未初始化,里面都是垃圾值
- int i;
-
-
- scanf("%d", &a[0]);
- printf("a[0] = %d\n", a[0]);
-
- scanf("%d", &a[1]);
- printf("a[1] = %d\n", a[1]);
-
- scanf("%d", &a[2]);
- printf("a[2] = %d\n", a[2]);
-
- scanf("%d", &a[3]);
- printf("a[3] = %d\n", a[3]);
-
- scanf("%d", &a[4]);
- printf("a[4] = %d\n", a[4]);
-
- printf("-------------------\n");
-
- for (i=0; i<5; i++)
- printf("%d\n", a[i]);
-
-
- return 0;
- }
例子:
赋值
排序
求最大/最小值
倒置
int a[3][4];
总共是12个元素,可以当做一个3行4列的矩阵来处理
这12个元素的名字依次是
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[i][j]:表示第i+1行,第j+1列元素
int [m][n]:最大为下标a[m-1][n-1]
3*4的矩阵
初始化
写法1 int [2][3] = {1,2,3,4,5,6}
写法2 int [2][3] = {
{1,2,3},
{4,5,6},
}
输出二维数组:两个for输出,
下面代码为二维数组的初始化和输出
- # include <stdio.h>
- /*
- 二维数组的初始化和输出
- */
- int main(void)
- {
- int i,j;
- int a[2][3] = {
-
- {1,2,3},
- {4,5,6},
-
- };//二维数组初始化
-
-
- for(i=0; i<2; i++)//编译器先按行读取 从第0行开始
- {
- for(j=0; j<3; j++)//在按列读取 从第0列开始
- printf("%5.1d ", a[i][j]);
- printf("\n");
- }
- return 0;
- }
例子
二维数组排序
最大值、最小值
矩阵操作
等
是否存在多为数组
不存在
因为内存是线性的
N维数组可以当做每个元素数n-1维的数组的一维数组(重点记忆)
比如二维数组
Int [3][4];
该数组是含有3个一维数组的数组
只不过每个一维数组元素都可以再分成4个小元素
Int [3][4][5];
该数组是含有3个一维数组的数组
只不过每个一维数组元素都是4行5列的二维数组
以上是我的总结;如有不足,感谢点评
2023年6月13日17:18:25
作者:wkx
目的:学习C语言
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。