0


超详细!!!让你通透数组!!!初学复习不迷路!!

数组的学习与运用

前言

从实践中来定义多个变量时候,反复使用同一个功能时候,需要定义大量变量、需要重复多次写同样的一段语句,这样用数组简化,函数的形式简化操作,节省大量时间。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数组是什么?

数组是一组相同类型数据的集合

二、使用步骤

1.一维数组的创建

基本语法

首先我们需要知道数组创建的基本语法

type_表示的是数组的类型,如果数组里是字符,那么就采用‘char’;如果数组内存储的类型是整数数字,那么就采用‘int’,依此类推。

arr_name指的是数组名字的创建,不唯一,可以随意定义数组名字。例如:str srr arr......

唯一要记住的是不可以随意取名int,char之类的奇怪名字。

[const_n]是一个常量表达式,用来定义数组的大小。

在这里插入图片描述

在明白了基本的语法之后,我们要讲到数组的创建了,小白的话好好看下面内容

如果我们需要的是整形的数组,数组内有10个元组,代码如下

int arr[10];

如果是数组内放字符,或者浮点数:

char arr[10];
double arr[10];

这里我们讲一个特例,在c99中引入了变长数组的概念,变长数组支持数组的大小由变量来决定,但是并不是说数组的长度可以改变,而是说数组的大小,可以由变量来决定!!

例如:

int n=0;
scanf("%d",&n);
int arr[n];

注意只有在支持c99的编译器之下运行才能实现,在vs2019或者2022中会报错,但是在牛客等刷题网站中可以使用,经常有同学在此处迷惑,故笔者在此赘述。

数组的初始化

例子如下

int arr[10]={1};

1:此处称为不完全初始化,只会初始化数组第一个值,其他都是默认为0,我们可以通过监视来观察一下

2:完全初始化: 如果完全初始化也是可以的,类似如下代码:

int arr[10]={1,2,3,4,5,6,7,8,9,10};

** **此时数组的每一个值都被初始化,我们来看窗口监视

字符类型也是一样,不做类举。

3:还有一种方式可以创建数组,不多bb,来看代码:

int arr[]={1,2,3,4};

此时是由后面的值,来确定数组的大小,很明显,此处数组的大小是4。

错误示范:char arr[]="";此处“”内为空,系统默认一个值为\0,所以arr的大小只能是1;

2:数组的使用

1).数组的下标

数组的下标是从0开始的,往后依次类推

我们可以使用arr[n]来访问数组的下标对应的值,比如如上的代码中arr[4]代表数字5,arr[8]代表数字9.......

因此,当我们需要访问数组内每一个值的时候,只需要求出每一个下标即可。

例如,我们要打印数组内每一个值:

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

是不是悟到了

在这里插入图片描述

数组大小的计算:

int sz = sizeof(arr)/sizeof(arr[0]);

总结

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

     2. 数组的大小可以通过计算得到。

二维数组的创建和内存存放

有时候我们创建数组的同时需要要求数组几行几列,这时候我们的数组就同时拥有了两个维度的量,此时我们称之为二维数组,创建方法如下:

图中第一行,口语表示:整形数组,三行四列,从左往右,从上往下的数字分别是1,2,3,4,5

空余的全部默认为0;例如下面:(画的有点丑,不要介意)

图中第二行的意思是一样的不过在初始化数组的时候,第一行前两个数为1,2.。第二行前两个数为3,4.第三行第一个数为5,其余都是0,例子如下:

二位数组初始化时,可以省略行,不可以省略列

例如:int arr[][4]={1,2,3,4,5}; 可行

      int arr[3][]={1,2,3,4,5}               不可行

二维数组不仅行有下标,列也有 分别从上往下,从小到大从0递增

二维数组在内存的存放也是连续存放的如上图,因此我们可以理解到,为什么可以省略行,但不可以省略列,因为二维数组在内存条上也是连续存放的,我们需要确定哪个地方停下

数组越界

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

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

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

C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就 是正确的, 所以程序员写代码时,最好自己做越界的检查。

二维数组的越界访问会使数组变的紊乱!!!!

总结

以上就是今天的所有讲解啦,希望能对各位小伙伴起到帮助,感谢各位的支持!!!!

如果有错误欢迎指正!!!

如果没看懂私信解答!!!

下一章将会讲到冒泡排序,要了解的小伙伴三连支持一下


本文转载自: https://blog.csdn.net/m0_72018048/article/details/126025687
版权归原作者 乐言.. 所有, 如有侵权,请联系我们删除。

“超详细!!!让你通透数组!!!初学复习不迷路!!”的评论:

还没有评论