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语言数组的各种操作,包括定义数组、数组初始化、读写数组元素、数组长度、数组遍历、二维数组、指针与数组、动态分配数组内存、数组作为函数参数以及数组排序算法等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言数组的各种操作梳理 - Python技术站