关于数组的那些事

目录

1. 数组的简介

2. 数组的使用

3. 为什么需要数组

4. 数组的分类

  4.1 一维数组

4.2 二维数组

 4.3 多维数组


1. 数组的简介

    数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

    数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、...、runoob99,而是声明一个数组变量,比如 runoob,然后使用 runoob[0]、runoob[1]、...、runoob[99] 来代表一个个单独的变量。

2. 数组的使用

#include<stdio.h>
int main(void)
{
	int a[5] = { 1,2,3,4,5 };
	//a是数组的名字,5表示数组原宿的个数,并且这五个过热元素分别用a[0],a[1]....a[4]
	int i;

	for (i = 0; i < 5; ++i)
		printf("%d\n", a[i]);

	return 0;
}

  在这里for循环了5次,最后输出的是a[4],所以这个循环是把a[0]到a[4]输出。

  首先,a[5]说明定义了五个变量,但数组中的变量叫元素,这五个变量分别用a[0]到a[4]表示

在这里a[i]表示第i加1个。

3. 为什么需要数组

  我们的数组定义数组变量很方便,只要把a[]里的数字改一下,比如我·要定义300个变量,a[300]

就行了。如果你要定义的变量很多,保存的数据很多,假如需要10000个数据,如果没有数组,光

起名字就很麻烦,用数组则不存在这个问题,而且名字也确定了。

     1. 为了解决大量同类型数据的储存和使用。

  而另一个好处,用数组可以模拟我们的现实世界。假设int a[31];表示班级里31人的年龄,这里就出现了一个问题,我们这里是一维数字,可以当一个线性结构,也就是直线行的东西。int a[8][6];这表示的是一个平面,这表示8行6列或者是8列6行。总之这个元素是48个。用二维数组可以表示一个平面的事物。当然有二就用三,三维数组多了一个纵向,变的立体了。

     2. 为了模拟现实世界

4. 数组的分类

  4.1 一维数组

   怎样定义一维数组:为n个变量连续分配存储空间

                                   所有的变量数据类型必须相同

                                   所有变量所占的字节大小必需相等

我们的数组不可能第一个元素是整形,第二个是浮点型。只有满足了这三个条件它才是数组

                       例子:  int a[5]

                                   一维数组名不代表数组中所有的元素,

                                   一维数组代表数组第一个元素的地址                               

   有关一维数组的操作: 初始化 赋值 排序 求最大/最小值 倒置 查找 插入 删除

      初始化分为 完全初始化 int a[5] = {1,2,3,4,5};

                         不完全初始化 int a[5] = {1,2,3}; 未初始化的元素自动为零

                         不初始化 int a[5]; 所有元素是垃圾值

                         清零 int a[5] = 0;   

      错误写法 1.  int a[5];  a[5] = {1,2,3,4,5};

                只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的。

                    2.   int a[5] = {1,2,3,4,5};

                      a[5] = 100; error因为没有a[5]这个元素,最大只用a[4]。

                    3.   int a[5] = {1,2,3,4,5};

                          int b[5];   如果把a数组中的值全部复制给b数组

                         错误写法

                          b = a  / /error

                          正确写法  for(i = 0; i<5 ;++i)

                                           b[i] = a[i];

         赋值

#include<stdio.h>
int main(void)
{
	int a[5];
	int i;

	scanf_s("%d", &a[0]);
	printf("a[0] = %d\n", a[0]);

	scanf_s("%d", &a[3]);
	printf("a[3] = %d\n", a[3]);

	for (i = 0; i < 5; ++i)
		printf("%d", a[i]);

	return 0;
}

    倒置

int a[7] = { 1,2,3,4,5,6,7 };
	int i, j;
	int t;

	i = 0;
	j = 6;
	while (i < j)
	{

		t = a[i];
		a[i] = a[j];
		a[j] = t;

		i++;
		--j;
	}

	for (i = 0; i < 7; ++i)
		printf("%d\n", a[i]);

	return 0;
}

4.2 二维数组

         int a[3][4]; 总共是12个元素,可以当作三行四列看待,这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[3][0] a[3][1] a[3][2] a[3][3]

                                 a[i][j] 表示第i+1行第j+1列的元素

                            int a[m][n]; 该二维数组右下角的元素只能是a[m-1][n-1]

    初始化               

                int a[3][[4] = {

                                    {1, 2,  3,  4},

                                    {5, 6,  7,  8}, 

                                    {9, 10,11,12}                               

                                    };

     操作

#include<stdio.h>
int main(void)
{
	int a[3] [4]= {

					{1, 2, 3, 4},

					{5, 6, 7, 8},

					{9, 10,11,12}
	};
	int i, j;

	//输出数组内容
	for (i = 0; i < 3; ++i)
	{
		for (j = 0; j < 4; ++j)
			printf("%-5d  ", a[i][j]);
		printf("\n");
	}

	return 0;
}

 4.3 多维数组

          是否存在多维数组

                     不存在

                      因为内存是线性一维的

          n维数组可以当作每个元素是n-1维数组的一维数组

                    比如:

                           int a[3][4];    该数组是含3个元素的一维数组

                                               只不过每个元素都可以再分成4个小元素

                           int a[3][4][5];

                                                该数组是含3个元素的一维数组 

                                                只不过每个元素都是四行五列的二维数组


感谢观看

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值