数组是C言语中一种非常基本且重要的数据构造,用于存储雷同范例的数据项。数组中的元素在内存中是持续存储的,可能经由过程索引来拜访特定地位的元素。在C言语中,数组的索引是从0开端的。
数组的定义格局如下:
datatype arrayName[arraysize];
其中,datatype
是数组中元素的数据范例,arrayName
是数组的名字,arraysize
是数组的大小,即数组中元素的数量。
数组可能在申明时直接初始化,也可能在申明后单独初始化。
int numbers[] = {1, 2, 3, 4, 5};
int numbers[5];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;
假如不给全部元素赋值,则未赋值的元素会被主动初始化为0。
数组元素可能经由过程索引来拜访,索引从0开端计数。
int firstElement = numbers[0];
遍历数组是罕见的操纵之一,平日经由过程轮回构造实现。
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]);
}
除了最基本的单维数组外,C言语还支撑多维数组,如二维数组、三维数组等。
二维数组常用来表示矩阵或表格。
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int secondRowSecondColumn = matrix[1][1];
指针与数组有着密切的关联。数组名本身就是一个指向数组第一个元素的指针。
int *p = numbers;
printf("%d ", *(p + 1)); // 输出 2
for (int *p = numbers; p < numbers + 5; p++) {
printf("%d ", *p);
}
int *dynamicArray = (int *)malloc(5 * sizeof(int));
free(dynamicArray);
int max = numbers[0];
int min = numbers[0];
for (int i = 1; i < 5; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
if (numbers[i] < min) {
min = numbers[i];
}
}
经由过程本文的介绍,信赖读者曾经对C言语数组有了单方面的懂得。控制数组操纵技能对进步编程效力至关重要。在现实编程中,机动应用数组可能进步代码的可读性跟可保护性。