用五种方法遍历一维数组和二维数组。1. 用下标法。 2. 用数组名法。 3. 用int *p 法。 4. 用 int *p【】 法。 5. 用int (*p)【】 法。
时间: 2024-12-23 07:21:50 浏览: 4
在C语言中,遍历数组有多种方法,这里我会介绍五种常见的遍历方式:
1. **下标法(One-dimensional array traversal with indexing)**:
对于一维数组,你可以直接使用下标访问元素。例如:
```c
int arr[10];
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
printf("%d ", arr[i]);
}
```
2. **数组名法(Array name method for one-dimensional arrays)**:
也可以直接使用数组名遍历,但这实际上是下标法的一种简化形式,因为数组名本质上就是数组的第一个元素的地址加上偏移量得到的指针:
```c
int arr[10];
for (int i : arr) {
// 注意,这通常只适用于C++,C语言中不直接支持这种语法
printf("%d ", i);
}
```
3. **`int *p` 法(Pointer to first element for one-dimensional arrays)**:
使用指针从第一个元素开始逐个指向并访问数组元素:
```c
int arr[10];
int *p = arr;
while (p < &arr[sizeof(arr) / sizeof(arr[0])]) {
printf("%d ", *p++);
}
```
4. **`int (*p)[n]` 法(Two-dimensional array pointer in C)**:
对于二维数组,你需要声明一个指向整数数组的指针,然后按照行或列进行遍历:
```c
int arr[3][4];
int (*row)[4] = arr; // 指向每行的指针
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", row[i][j]);
}
printf("\n");
}
```
5. **`int (*p)[m]` 法(Column-major order two-dimensional array pointer)**:
这是一种处理二维数组时的常见做法,其中`(*p)[m]`表示每个元素是一维数组长度为`m`的数组,可以按列读取:
```c
int arr[3][4];
int (*col)[3] = arr; // 按列存储,指向每列的指针
for (int j = 0; j < 4; j++) {
for (int i = 0; i < 3; i++) {
printf("%d ", col[j][i]);
}
printf("\n");
}
```
这里假设二维数组采用的是列主序(column-major),如果采用行主序,则指针类型应为`(int (*)[4])arr`。
阅读全文