1. 数组简介
数组是用来存储一系列相同类型数据的集合。数组的元素可以通过索引(通常是数字)访问。数组的索引通常从 0 开始。
2. 声明数组
在 C 中,可以声明一个数组,如下所示:
c
类型 数组名称[数组长度];
示例:
c
int arr[10]; // 声明一个整数数组,包含10个整数
float floatArr[20]; // 声明一个浮点数数组,包含20个浮点数
char charArr[15]; // 声明一个字符数组,包含15个字符
3. 初始化数组
在声明数组时,也可以同时对数组进行初始化。
示例:
c
int arr[5] = {1, 2, 3, 4, 5}; // 声明并初始化一个整数数组
如果不提供所有元素的初始值,未初始化的元素将被设置为默认值(对于数字类型是 0)。
4. 访问数组元素
可以通过数组名和索引来访问数组的任何元素。
示例:
c
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("第三个元素为: %d\n", arr[2]);
return 0;
}
5. 数组的遍历
通常使用循环来遍历数组的所有元素。
示例:
c
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
6. 多维数组
C 支持多维数组。最常见的是二维数组。
示例:
c
#include <stdio.h>
int main() {
int arr[2][3] = { {1, 2, 3}, {4, 5, 6} };
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
7. 数组和函数
数组可以作为参数传递给函数。
示例:
c
#include <stdio.h>
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printArray(arr, 5);
return 0;
}
8. 数组的局限性
- 数组的大小一旦声明就不能改变。
- 数组中的所有元素必须是同一类型。
9. 数组内存布局
一维数组在内存中是连续存放的。这意味着数组中相邻元素的地址也是连续的。这种内存布局使得数组的访问速度非常快。
10. 动态数组
在 C 语言中,也可以使用指针和动态内存分配(如 malloc
)来创建大小可变的数组。
示例:
c
int* dynamicArray = (int*)malloc(5 * sizeof(int));
11. 数组与字符串
在 C 语言中,字符串实际上是以 null 结尾的字符数组。因此,字符串可以使用字符数组来处理。
示例:
c
char str[] = "Hello, World!";
12. 指针和数组
指针和数组在 C 语言中紧密相关。数组名可以作为指向数组第一个元素的指针。
示例:
c
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p 指向 arr 的第一个元素