一维数组和二维数组

今天学习数组

目录

一、数组的概念

二、一维数组的创建和初始化

三、一维数组的使用

四、sizeof计算数组元素个数

五、二维数组的创建和初始化

六、二维数组的使用


一、数组的概念

数组是一组相同类型元素的集合;从这个定义中我们可以知道:

  • 数组中存放的1个或者多个数据,但数组元素个数不能为0。
  • 数组中存放的多个数据,类型是相同的。

数组分为一维数组和多维数组,多维数组一般比较多见的是二维数组。

二、一维数组的创建和初始化

2.1数组创建

一维数组创建的基本语法如下:

type arr_name[常量值];

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型。

比如我们可以创建如下的数组:

int math[5];
char ch[8];
double[6];

2.2数组的初始化

有时候数组创建时,需要一些初始值,这就被称为初始化

数组的初始化:

int arr[5] = {1,2,3,4,5};//完全初始化


int arr[5] = {1,2,3,4};//不完全初始化,剩余的一个元素为0


int arr[5]= {1,2,3,4,5,6,7};//错误的初始化,初始化项太多,超过了5项

2.3 数组的类型

数组是有类型的,数组算是一种自定义类型,去掉数组名字留下的就是数组类型

int arr[5];//类型是 int [5]

三、一维数组的使用

学习了基本的数组语法,一维数组可以存放数据,存放数据的目的是对数据的操作,我们如何使用一堆数组呢?

3.1 数组下标

C语言中规定数组是有下标的,下标是从0开始的,最后一个元素的下标是n-1,下标相当于数组的元素编号。

int arr[5] = {1 ,2 ,3 ,4 ,5};
   //下标分别是0,1,2,3,4

在C语言中数组的访问提供了一个操作符[],这个操作符叫:下标操作符。有了下标操作符,我们就可以轻松访问数组的元素了。比如访问下标为4的元素,我们就可以使用arr[4]。代码如下:

我们就打印出了下标为4的元素,5

3.2数组元素的打印。

如果我们想打印整个数组的内容,我们只需要产生所有数组的下标,并打印出来就可以了,因此可以用循环来实现。代码如下:

 3.3数组的输入

明白了数组的访问,我们也要根据自己的需求,给自己想要的数组输入数据。可以用scanf函数和循坏来实现输入和打印。代码如下:

四、sizeof计算数组元素个数

在遍历数组的时候,我们经常想知道数组的元素个数,那C语言中有办法使用程序计算数组元素个数吗?答案是有的,可以使用sizeof。sizeof中C语言是一个关键字,是可以计算类型或者变量大小的,其实sizeof也可以计算数组的大小。比如:

这里结果是20,计算是数组所占内存空间的大小,单位是字节。每个元素占4个字节。我们又知道所有元素的类型都是相同的,那只要计算出一个元素所占字节的个数,数组的元素个数就能算出来。因此,代码如下:

 这里结果是10,表示数组有10个元素。

五、二维数组的创建和初始化

5.1二维数组的概念

前面学习的数组被称为一维数组,数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组被称为三维数组,二维数组以上的数组统称为多维数组

5.2二维数组的创建

int i[3][5];
  • 3表示数组有3行
  • 5表示每一行有五个元素
  • int 表示数组的每个元素是整型类型
  • i 是数组名,可以根据自己需要指定名字

5.3二维数组的初始化

//不完全初始化
int arr1[3][5]={1,2};
int arr2[3][5]={0};

 

//完全初始化
int arr3[3][5] = {1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};

 

//按照行初始化
int arr4[3][5] = {{1,2},{3,4},{5,6}};

int arr5[][5]={1,2,3};//初始化时行省略,列不能省略
int arr6[][5]={1,2,3,4,5,6,7};
int arr7[][5]={{1,2},{3,4},{5,6}};

 

 

六、二维数组的使用

6.1二维数组的下标

二维数组的访问也是使用的下标形式的,二维数组有行和列,只要锁定了行和列就能唯一锁定数组中的一个元素。C语言规定,二位数字的行和列都是从0开始的。我们可以快速定位一个第二行,第四列的元素。代码如下:

 6.2二维数组的输入和输出

访问二维数组的单个元素我们知道了,那么如何访问整个二维数组呢?

我们依旧可以运用循环来实现,代码如下:

 6.3练习

最后,做一道练习题吧!

练习:多个字符从两端移动,向中间汇聚。编写代码,演示多个字符从两端移动,向中间汇聚。

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main()
{
	char arr1[] = "welcome to here!!!!!!";
	char arr2[] = "*********************";

	int left = 0;
	int right = strlen(arr1) - 1;

	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//休眠,单位是毫秒
		system("cls");//用来执行系统命令的
		left++;
		right--;
	}

	printf("%s\n", arr2);

	//char arr[] = "abc";
	//printf("%d\n", strlen(arr));

	return 0;
}

今天就到这里了。

你说你想逃开松手,爱太累爱得不自由

因为我给不起最简单的承诺,你停止收讯号

我开始搜寻不到,到底有谁知道

是几点钟方向,你才会收到暗号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值