C语言数组
数组定义为存储在连续内存位置的相似类型数据项的集合。数组是C编程语言中的派生数据类型,可以存储原始数据类型,例如int,char,double,float等。它还可以存储派生数据类型的集合,例如指针,结构,数组是最简单的数据结构,其中每个数据元素都可以通过使用其索引号来随机访问。
C数组在必须存储相似元素的情况下非常有用。例如,如果我们要在6个科目中存储学生的成绩,则无需为不同科目中的成绩定义不同的变量。取而代之的是,我们可以定义一个数组,该数组可以将标记存储在连续存储位置的每个主题中。
通过使用数组,我们可以轻松访问元素。只需几行代码即可访问数组的元素。
数组的属性
数组包含以下属性。
数组的每个元素都具有相同的数据类型,并且具有相同的大小,即int = 4个字节。
数组的元素存储在连续的存储位置,第一个元素存储在最小的存储位置。
可以随意访问数组的元素,因为我们可以使用给定的基地址和数据元素的大小来计算数组的每个元素的地址。
C数组的优势
1、代码优化: 访问数据的代码更少。
2、易于遍历: 通过使用for循环,我们可以轻松地检索数组的元素。
3、易于排序: 要对数组的元素进行排序,我们只需要几行代码。
4、随机访问: 我们可以使用数组随机访问任何元素。
C数组的缺点
1、固定大小: 无论大小,我们在声明数组时定义的大小都不能超过限制。因此,它不会像后面将要学习的LinkedList那样动态地增大大小。
C数组的声明
我们可以使用c语言声明数组通过以下方式。
data_type array_name[array_size];
现在,让我们看一下声明数组的示例。
在这里,int是 data_type ,标记是 array_name ,5是 array_size 。
C数组的初始化
初始化数组的最简单方法是使用每个元素的索引。我们可以使用索引来初始化数组的每个元素。请考虑以下示例。
marks[0]=80;//initialization of array
marks[1]=60;
marks[2]=70;
marks[3]=85;
marks[4]=75;
C数组示例
#include<stdio.h>
int main(){
int i=0;
int marks[5];//declaration of array
marks[0]=80;//initialization of array
marks[1]=60;
marks[2]=70;
marks[3]=85;
marks[4]=75;
//traversal of array
for(i=0;i<5;i++){
printf("%d \n",marks[i]);
}//end of for loop
return 0;
}
输出
C数组: 带有初始化的声明
我们可以在声明时初始化c数组。让我们看一下代码。
int marks[5]={20,30,40,50,60};
在这种情况下,不需要定义大小。因此,也可以将其编写为以下代码。
int marks[]={20,30,40,50,60};
让我们看看C程序在C中声明和初始化数组。
#include<stdio.h>
int main(){
int i=0;
int marks[5]={20,30,40,50,60};//declaration and initialization of array
//traversal of array
for(i=0;i<5;i++){
printf("%d \n",marks[i]);
}
return 0;
}
输出
C数组示例: 对数组进行排序
在以下程序中,我们使用气泡排序方法对数组进行升序排序。
#include<stdio.h>
void main ()
{
int i, j,temp;
int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
for(i = 0; i<10; i++)
{
for(j = i+1; j<10; j++)
{
if(a[j] > a[i])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf("Printing Sorted Element List ...\n");
for(i = 0; i<10; i++)
{
printf("%d\n",a[i]);
}
}
用于打印数组中最大和第二大元素的程序。
#include<stdio.h>
void main ()
{
int arr[100],i,n,largest,sec_largest;
printf("Enter the size of the array?");
scanf("%d",&n);
printf("Enter the elements of the array?");
for(i = 0; i<n; i++)
{
scanf("%d",&arr[i]);
}
largest = arr[0];
sec_largest = arr[1];
for(i=0;i<n;i++)
{
if(arr[i]>largest)
{
sec_largest = largest;
largest = arr[i];
}
else if (arr[i]>sec_largest && arr[i]!=largest)
{
sec_largest=arr[i];
}
}
printf("largest = %d, second largest = %d",largest,sec_largest);
}