C生万物之数组全面学习<五>

万水千山总是情,点点关注行不行。
一声朋友一生情,点点关注才能行!

1.数组的概念

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

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

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

2_1 .数组创建

  • type name[常量值]
  • type指的是数组中存放数据的类型,可以是:char,int,short,float等
  • name指的是数组的名字,是自己起的。
  • []中的常量值是用来指定数组的大小的,这个数组的大小是按实际需求指定的。

eg:想存储2023级电子4班30个人的高数成绩,我们可以创建数组,如下:

int math[20];

2_2数组的初始化

在数组创建的时候,我们需要给定一些初始值,称为初始化。数组的初始化一般使用{ }
如下:

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

2_3数组类型

数组也有类型,去掉数组名即为数组的类型
eg:
int arr[5]的类型即为int类型

3.一维数组的使用

3_1. 数组下标

与数学不同的是,C语言规定数组是有下标的,且下标是从0开始的
在这里插入图片描述
tip:[ ]是C语言中数组访问提供的一个操作符,叫下标引用操作符。
eg:

#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d\n",arr[7]);//打印8
printf("%d\n",arr[3]);//打印4


return 0;
}

3_2.数组元素的打印

如果我们想访问整个整个数组的内容,我们就要访问所有下标,可以用到循环结构

#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i= 0 ;
for(i=0;i<10;i++)
{
printf("%d\n",arr[i]);
}

return 0;
}

3_3.数组元素的输入

#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i= 0 ;
for(i=0;i<10;i++)
{
scanf("%d\n",&arr[i]);
}
for(i=0;i<10;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}

3_4.一维数组在内存中的储存

有了前面的内容,我们使用数组基本没有什么障碍了,如果还想深入了解,我们最好了解一下数组在内存中的储存。咱们给一个打印数组元素地址的代码

#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i= 0 ;
for(i=0;i<10;i++)
{
printf("&arr[%d]=p%\n",i,&arr[i]);
}

return 0;
}

数组在内存中是连续存放的。这就为后期我们使用指针访问数组奠定了基础。

4.二维数组的创建

  • type name[常量值1][常量值2];

例如:int arr[5][6]中5表示五行,6表示一行6个元素

4_1.不完全初始化

  • int arr1[3][5]={1,3};
  • int arr1[3][5]={0};
    在这里插入图片描述

4_2.完全初始化

int arr3[3][5]={1,2,3,4,5,2,3,4,5,6,3,4,5,6,7}
在这里插入图片描述

tip:

  • 数组并非和图一样排的,虽然它叫二维数组,但在内存中,他是连续的,也就是说,图中0行4列的下一个元素就是1行0列。
  • _在进行初始化时,可以省略行,但是不可以省略列,例如:int arr4[ ][5]={1,2,3}

4_3.二维数组的使用

这里类似于一维数组,找下标,不过需要行号和列号共同定位

#include<stdio.h>
int main()
{
int arr[3][5]={1,2,3,4,5,2,3,4,5,6,3,4,5,6,7};
int i= 0 ;
for(i=0;i<10;i++)
{
	int j = 0;
	for(j=0;j<5;j++)
	{
	scanf("%d\n",&arr[i][j]);
	}

}
for(i=0;i<10;i++)
{
	int j = 0;
	for(j=0;j<5;j++)
	{
	printf("%d\n",arr[i][j]);
	}
printf("\n");
}
return 0;
}

(如有错误,麻烦各位大佬评论区指正,感谢!)

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dawan09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值