数组是C语言中最重要的主题之一。我们可以通过数组将相同类型的数据元素存储在一个有传染性的内存分配中。数组的特别之处在于我们可以用相同的名字但不同的索引号来存储一组变量。索引指的是每个内存块的地址。因此,它有三个主要特点。它们是。
- 数组是一个类似元素的线性集合。
- 阵列也被称为下标变量。
- 数组是一组变量。
我们可以在哪里使用数组?
在这里,我们必须评估1000个值的平均值。因此,我们必须至少声明1000个变量来完成这个程序。我们不需要声明1000个单独的变量,而是使用一个数组。
例如:a [1000] 其中**a []**是一个数组,1000是变量的数量。
[0][1] [2] [3][4 ] [5]
它是一个组,但它没有单独的名字,但它有索引号,就像0、1、2一样,而且它在RAM中占用连续的内存。索引号也被称为位置号。它有相同类型的数据元素,就像int,或char,或float。
数组实际上代表数组中第一个变量的索引。
如果我们想访问每个变量,我们写
a [0] [首先是数组的名称,然后是方括号和索引号。]
但是一开始,当我们声明一个数组时,这意味着数组中变量的总数量。
int a [10] [这意味着a是一个数组,其中存在10个变量] 。
但是在那之后,当我们写的时候就像。
a[0], a[1]....,它意味着数组的索引号。
让a[0] = 12,a[1] = 8,a[2] = 10,a[3] = 15
例子-1
#include<stdio.h>
这里我们展示了一个数组的声明方式。在数组的帮助下,我们计算出一些数值的平均值。
int main()
{
inta[ 10 ] ,sum= 0 ,i; //声明一个数组。
floatavg;
printf ( " Enter 10 numbers " ) ;
for (i= 0 ;i<= 9 ;i++)
{
scanf("%d",&a[i]);//在数组中从用户那里取一些。
}
for (i= 0 ;i<= 9 ;i++)
{
sum=sum+a[i] ;
}
avg=sum/ 10.0 ;
printf ( " average is %f \n ",avg) ;
return 0 ;
}
输出
解释
这里我们声明了一个名为a[]的数组,它容纳了10个值。在for循环 的帮助下**,** 我们添加了一些数值,这些数值将使用scanf()函数从用户那里获取。然后,我们计算这10个值的平均值,并将其存储在avg 变量中。
数组的声明
Int a []; error [每当我们声明一个数组而不进行初始化,并且不在括号中放入任何数字,这意味着这里发生了错误]
Int a[5];
a[0] =9;
inta[5] = {9,6,8,0,2}
inta[] = {9,6,8,0,2}.
inta[5] = {9,6,8,0,2,4,7}这是一个错误,因为数组超出了边界
A[5] = {9,6}
每当我们声明一个没有初始化的数组时,这意味着每个索引都有默认的垃圾值存在。
当我们声明一个带初始化的数组时,我们可以清空方括号。
如果我们用较少的数字初始化一个数组,那么数组索引中的其他数值默认为零。
例子-2
这里我们展示了动态数组是如何在数据上工作的,在数组的帮助下,我们从一组数字中评估出最小和最大的值。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a ,i,n,min,max;
printf ( " Enter size of the array :");
scanf("%d",& n);
a= ( int*) malloc (n* sizeof ( int ) ) ; // malloc ( ) 被调用来创建一个数组。
for ( inti= 0 ;i<=n- 1 ;i++)
{
printf ( " arr[%d]:" ,i) ;
scanf( "%d",&a[i]);
}
min=max= a [0] ;
for (i= 1 ;i a [i] )
min= a [i] ;
if(max< a[i ])
max= a [i] ;// 找出最大值。
}
printf ( " array的最小值是:%d " ,min) ;
printf ( " \n array的最大值是。%d /n " ,max) ;
free (a) ;
return 0 ;
}
输出
解释
在这里,在malloc()函数的帮助下,我们声明了一个数组,并在运行时得到一些值,从这些值中计算出最小值和最大值。我们声明了两个名为min和max的变量,并打印这些变量。
例3
在数组索引的帮助下, 我们在这里对数组的值进行反转。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *a ,n,temp,i;
printf ( " Enter size of the array : " );
scanf("%d",& n);
a= ( int*) malloc (n* sizeof ( int ) ) ; // 创建一个数组。
for ( inti= 0 ;i<=n- 1 ;i++)
{
printf ( " arr[%d]:" ,i) ;
scanf( "%d",&a[i]);
}
for ( inti= 0 ;i<n/ 2 ;i++)
{
temp=a[i ];
a[i] =a[n-i- 1 ] ;
a[n-i- 1 ] =temp;
}
printf ( " reverse of the array \n " ) ; // reversing the array.
for ( inti= 0 ;i<n;i++)
{
printf ( " %d, ",a[i] ) ;
}
printf ( " \n " ) ;
`free(a) ;
return 0 ;
}
输出
解释
这里我们用动态内存分配的方法创建一个数组。Malloc()函数创建了数组的块,并动态地获得一些值。然后,我们将这些数组的值反转并打印出来。
例四
这里我们展示了如何将一个数组的元素复制到另一个数组。
#include <stdio.h>
int main()
{
inta[100] ,b[100 ];// 声明数组。
inti,n;
printf ( " \n\n 把一个数组的元素复制到另一个数组。\n") ;
printf( " ---------------------------------------------------- \n " ) ;
printf ( " 输入要存储在数组中的元素数量。");
scanf("%d",&n);
printf ( " 输入数组中的%d元素。\
for (i= 0 ;i<n;i++)
{
printf ( " element - %d :" ,i) ;
scanf("%d",& a[i]);
}
/* 将第一个数组的元素复制到第二个数组。*/
for (i= 0 ;i<n;i++)
{
b [i] =a[i] ; // 复制元素。
}
/* 打印第一个数组的元素 */
printf ( " \n 第一个数组中存储的元素是 。\n") ;
for (i= 0 ;i<n;i++)
{
printf ( " %d ", a [ i] ) ;
}
/*打印复制到第二个数组的元素。*/
printf ( " \n\n 拷贝到第二个数组中的元素是 。\n") ;
for (i= 0 ;i<n;i++)
{
printf(" %d " , b [ i ] ; } printf (" %d " ,b[i ] ));
}
printf ( " \n \n " ) ;
return 0 ;
}
输出
解释
这里我们声明了一个名为a [] 的数组**。** 在这个数组中,我们从用户那里获取一些值。现在我们又声明了一个名为b [] 的数组。数组b[]的元素是从数组a[]的元素中复制出来的,并将这些值同时打印给数组a[]和b[]。我们可以看到产生了相同的输出,因为它们是复制的版本。
总结
这里我们详细讨论了数组的基本概念。数组是一个在内存中存储数值的程序。通过数组,我们可以快速访问任何元素。但是,数组在用途方面有一些限制,但在编程方面却非常有用。