数组是一种将相同类型的数据项存储在连续内存位置的集合。数组是 C 语言中的派生数据类型,可以存储原始数据类型(如 int、char、double、float)以及派生数据类型(如指针、结构体等)。数组是最简单的数据结构,可以使用索引号随机访问每个数据元素。

C 数组具有以下特点:

  • 数组的每个元素具有相同的数据类型和大小,例如 int 类型占据 4 字节。
  • 数组的元素存储在连续的内存位置中,其中第一个元素存储在最小的内存位置。
  • 可以随机访问数组的元素,因为可以根据给定的基址和数据元素的大小计算出每个元素的地址。

C 数组的优点:

  1. 代码优化:访问数据的代码量较少。
  2. 遍历数组容易:使用 for 循环可以轻松获取数组的元素。
  3. 排序容易:只需几行代码即可对数组的元素进行排序。
  4. 随机访问:可以随意访问数组中的任何元素。

C 数组的缺点:

  1. 固定大小:在声明数组时定义的大小无法超过限制。因此,它不能像链表那样动态增长大小。

C 数组的声明:

可以使用以下方式在 C 语言中声明数组:

数据类型 数组名称[数组大小];

例如,下面是一个声明数组的示例:

int marks[5];

其中,int 是数据类型,marks 是数组名称,5 是数组大小。

C 数组的初始化:

最简单的初始化数组的方法是使用每个元素的索引号。可以使用索引为数组的每个元素进行初始化。考虑以下示例:

marks[0] = 80; // 数组初始化
marks[1] = 60;
marks[2] = 70;
marks[3] = 85;
marks[4] = 75;

C 语言数组初始化

C 数组的示例:

#include<stdio.h>
int main(){
    int i = 0;
    int marks[5]; // 数组声明
    marks[0] = 80; // 数组初始化
    marks[1] = 60;
    marks[2] = 70;
    marks[3] = 85;
    marks[4] = 75;
    // 遍历数组
    for(i = 0; i < 5; i++){
        printf("%d \n", marks[i]);
    }
    return 0;
}

输出结果:

80
60
70
85
75

C 数组的声明和初始化:

可以在声明数组时进行初始化。看下面的代码:

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

在这种情况下,不需要定义大小。也可以写成以下代码:

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

让我们看一个在 C 中声明和初始化数组的程序示例:

#include<stdio.h>
int main(){
    int i = 0;
    int marks[5] = {20, 30, 40, 50, 60}; // 声明和初始化数组
    // 遍历数组
    for(i = 0; i < 5; i++){
        printf("%d \n", marks[i]);
    }
    return 0;
}

输出结果:

20
30
40
50
60

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);
}

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想