📜  C语言中的数组

📅  最后修改于: 2020-10-22 01:22:10             🧑  作者: Mango

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 marks[5];

在这里,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
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;
}  

输出量

80
60
70
85
75

C数组:带有初始化的声明

我们可以在声明时初始化c数组。让我们看一下代码。

int marks[5]={20,30,40,50,60};

在这种情况下,不需要定义大小。因此,也可以将其编写为以下代码。

int marks[]={20,30,40,50,60};

让我们看看C程序在C中声明和初始化数组。

#include
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;
}  

输出量

20
30
40
50
60

C数组示例:对数组进行排序

在下面的程序中,我们使用气泡排序方法对数组进行升序排序。

#include  
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]);  
    }  
}   

程序print数组的最大和第二大元素。

#include
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; ilargest)
        {
            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);
    
}