【C上分之路】第五篇:数组的定义、初始化方式,查询元素
作者:互联网
文章目录
数组
数组是由数据类型相同的一组数据组成,数组中每一个数据都叫做数据元素,数组所包含的数组个数称为数组长度,数组中的每一个元素都一个对应的序号或者位置,这个序号从0开始,这个序号也叫做下标
数组的定义
要使用数组时,通过声明数组告诉编译器数组中含有多少元素和这个元素的原型
定义形式:data_type ArrayName[length]
data_type:数组元素的数据类型
ArrayName:定义的数组名
length:数组长度,可以为整型常量表达式
数组的初始化
若数组未进行初始化,则数组元素和未初始化的变量一样,其中存储的都是垃圾值,所以使用数组之前必须进行初始化,编译器使用的是内存相应位置上的值
根据数组对元素初始化的位置和数量可以分为全部初始化、部分初始化、指定初始化
全部初始化
全部初始化是传统的C初始化语法,必须初始化最后一个元素之前的所有元素,即对元素进行逐一赋值,不能对数组进行整体赋值
int a[5] = {11,22,33,44,55}; //正确,全部进行逐一赋值
int b[5] = 1; //错误,不能进行整体赋值
全部初始化一个数组时,可以在声明定义的时候不指定数组的长度,编译器会根据数组元素来推断出数组的长度
部分初始化
当初始值个数小于数组元素个数时,只给数组前面部分元素赋值,剩余的部分都会初始化为0
指定初始化
C99增加了一个特性:指定初始化器,可以初始化指定的数组元素
若定义时没有指定数组长度进行指定初始化,则编译器会把数组的大小设置为足够装得下初始化的值
数组的边界
数组在内存中连续的,数组元素之间都是在连续的地址上存储的
数组边界确定了数组下标的取值范围,但是使用数组时必须要确保数组的下标是有效的值
数组越界就是数组下标超出了数组边界,访问到其他地址上的垃圾值,但是编译器并会检查下标是否在数组的有效范围内,这样的检查会降低程序的运行速度,C标准建立的一个核心理念就是相信程序员,相信程序员在使用数组不会引发数组越界的行为,所以使用数组时要确保下标值是有效值
二维数组
二维数组的定义形式:data_type array_name[length1][length2]
可将二维数组看做表格,length1当做表格的行,length2当做表格的列
要在数组中定位某个元素,则必须指明行列的下标
线性内存中存放二维数组的形式有两种,一种是按行排列,另一种按列排列
- 按行排列:先存放一行元素之后,然后再存放第二行元素,横向存放
- 按列排列:先存放一列元素之后,然后再存放后续列的元素,纵向存放
在C语言中,二维数组是按上图所示进行行排序,二维数组在概念上是二维的,但是在内存中是连续存放的
二维数组的初始化
初始化二维数组是建立在初始化一维数组的基础上,可以在这个基础对二维数组进行不同方式的赋值
分段赋值
二维数组可以看做是由两个一维数组嵌套而成,可对两个数组进行分段赋值:即第一个数组作为一个整体初始化,然后再将第二个数组进行整体初始化
int a[2][3]={{2,3,6},{4,5,7}};
连续赋值
二维数组是在内存中连续的,只要在元素范围之内就可以进行连续赋值
int a[2][3]{2,3,6,4,5,7};
静态数组
数组根据能否改变容量大小将数组分为静态数组、动态数组
静态数组:数组被定义之后,分配的内存空间是固定的,之能读写数据元素,不能对元素进行增删的操作
动态数据:数组在定义之后可以改变数组容量,允许在数组内的随意位置对元素进行增删操作
在C标准中,数组时静态数组,数组的大小一旦定义之后就不能进行改变,若要对数组在指定位置进行增删操作,那需要在内存中重新开辟空间,这会很大程度上影响程序性能和消耗资源
若要对数组进行增删,只能将要操作的数据放入至一个新的数组
数组查询元素
C标准库中没有提供与数组查询相关的函数,数组查询就是将查询的值与数组元素挨个比较
#include <stdio.h>
int main()
{
int a[10] ={ 3,9,9,9,7,2,8,4,6,9};
int b[10];
int num,flag = -1,count = 0;
printf("输入要查找的数字(1~9):");
scanf("%d",&num);
for(int i=0;i<10;i++)
{
if(a[i] == num)
{
flag = i;
count++;
for(int j = 0;j<count;j++)
{
b[count-1] = flag;
}
}
}
if(flag>=0){
for(int k = 0;k<count;k++)
{
printf("从数组中第%d次查询到了%d,下标为:%d\n",k+1,num,b[k]);
}
}else{
printf("在数组中查询不到%d\n",num);
}
return 0;
}
总结
数组是一系列相同类型的数据集合,简单介绍了数组的定义以及初始化方式,访问数组元素可以通过下标进行访问,以及对某个元素的查询
赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love
标签:初始化,int,元素,二维,第五篇,数组,上分,赋值 来源: https://blog.csdn.net/justilake/article/details/121181645