C语言数组的各种操作梳理

C语言数组的各种操作梳理

1. 定义数组

定义数组需要指定数组的类型、名称和元素个数,语法如下:

type arrayName[arraySize];

示例1:定义一个长度为10的整型数组

int numbers[10];

示例2:定义一个长度为5的double类型数组

double scores[5];

2. 数组初始化

数组初始化可以在定义时进行,通过一对花括号来指定数组的初始值,或者在数组定义之后通过循环等方式来进行。

语法1:在定义数组时进行初始化

type arrayName[arraySize] = {element0, element1, ..., elementN};

例如:

int numbers[5] = {1, 2, 3, 4, 5};

语法2:定义数组之后在代码中进行初始化

使用for循环来初始化数组:

for (int i=0; i<arraySize; i++) {
    arrayName[i] = someValue;
}

例如:

double scores[5];
for (int i=0; i<5; i++) {
    scores[i] = (double)i * 2.5;
}

3. 读写数组元素

通过数组下标来读写数组元素,数组下标从0开始。

arrayName[index]

例如,读取numbers数组中的第3个元素:

int third = numbers[2];

将numbers数组中的第4个元素赋值为10:

numbers[3] = 10;

4. 数组的长度

数组的长度可以通过sizeof操作符来获取,即数组占用空间大小除以类型大小等于数组长度。

sizeof(arrayName) / sizeof(type)

例如,获取numbers数组的长度:

int length = sizeof(numbers) / sizeof(int);

5. 数组遍历

可以使用for循环来遍历数组,读取或更新数组中的所有元素。

for (int i=0; i<arraySize; i++) {
    // do something with arrayName[i]
}

例如,打印scores数组中的所有元素:

for (int i=0; i<5; i++) {
    printf("scores[%d] = %f\n", i, scores[i]);
}

6. 二维数组

定义二维数组需要指定数组类型、名称、行数和列数,语法如下:

type arrayName[rowSize][colSize];

示例:

int matrix[3][3];

二维数组的操作和一维数组类似,需要指定两个下标来访问数组元素。

7. 指针与数组

可以使用指针来访问数组元素,指针变量初始化为数组名,然后通过指针变量加上偏移量来访问数组元素。

*(arrayName + index)

例如,使用指针p来访问numbers数组中的第3个元素:

int* p = numbers; // p指向numbers数组的第0个元素
int third = *(p + 2);

8. 动态分配数组内存

可以使用malloc函数来动态分配数组内存,需要指定要分配的字节数,然后将void指针强制转换为数组指针类型即可。

语法:

type* arrayName = malloc(size*sizeof(type));

示例:

int* nums = malloc(5*sizeof(int));

9. 数组作为函数参数

数组可以作为函数参数传递,可以通过引用传递来修改数组元素。

语法:

void functionName(type arrayName[], int arraySize) {
    // do something with arrayName
}

示例:

void printIntArray(int nums[], int length) {
    for (int i=0; i<length; i++) {
        printf("%d ", nums[i]);
    }
    printf("\n");
}

调用:

int numbers[5] = {1, 2, 3, 4, 5};
printIntArray(numbers, 5);

输出:

1 2 3 4 5

10. 数组排序算法

常见的数组排序算法有冒泡排序、选择排序、插入排序、快速排序等。这里以快速排序为例,给出代码实现。

void quickSort(int arr[], int left, int right) {
    if (left < right) {
        int pivot = arr[left];
        int i = left, j = right;
        while (i < j) {
            while (arr[j] > pivot && j > i) {
                j--;
            }
            while (arr[i] < pivot && i < j) {
                i++;
            }
            if (i < j) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        arr[left] = arr[i];
        arr[i] = pivot;
        quickSort(arr, left, i-1);
        quickSort(arr, i+1, right);
    }
}

示例:

int numbers[10] = {8, 5, 7, 6, 2, 3, 9, 1, 4, 0};
int length = sizeof(numbers) / sizeof(int);
quickSort(numbers, 0, length-1);
printIntArray(numbers, length);

输出:

0 1 2 3 4 5 6 7 8 9

以上就是C语言数组的各种操作,包括定义数组、数组初始化、读写数组元素、数组长度、数组遍历、二维数组、指针与数组、动态分配数组内存、数组作为函数参数以及数组排序算法等。

本文链接:https://my.lmcjl.com/post/17185.html

展开阅读全文

4 评论

留下您的评论.