一维数组的遍历C语言
时间: 2025-07-08 10:12:30 浏览: 9
<think>我们正在讨论C语言中一维数组的遍历方法。根据用户查询和引用内容,特别是引用[3]和引用[4]中提到的内容,我们可以总结出几种常见的方法。
引用[3]展示了一个基本的一维数组遍历示例,使用for循环和下标访问每个元素。
引用[4]提到了几种遍历方法,包括使用指针遍历,以及将二维数组展平为一维数组遍历的思路(虽然用户现在关注的是一维数组,但指针遍历方法同样适用)。
常见的一维数组遍历方法:
1. 使用下标循环遍历:通过循环变量i从0到数组长度-1,访问arr[i]。
2. 使用指针遍历:将指针指向数组首地址,然后通过指针递增来遍历每个元素。
另外,我们还需要注意数组长度的获取方式(引用[5]提到了一维数组长度的计算方法:sizeof(array)/sizeof(array[0]))。
根据这些信息,我们可以给出以下示例代码:
方法1:使用下标循环遍历
方法2:使用指针遍历
同时,我们还需要考虑数组作为函数参数传递时的情况(此时不能用sizeof计算数组长度,因为数组会退化为指针),所以通常需要传递数组长度。
下面我们详细说明这两种方法。</think>### C语言一维数组遍历方法
在C语言中,一维数组遍历主要有以下两种常用方法:
#### 1. **下标遍历法**
通过循环变量作为数组索引访问元素:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]); // 计算数组长度[^5]
for(int i = 0; i < len; i++) {
printf("%d ", arr[i]); // 通过下标访问元素
}
// 输出:1 2 3 4 5
return 0;
}
```
**特点**:
- 直观易读
- 可直接修改元素值(如 `arr[i] = new_value`)
- 需要计算数组长度(使用 `sizeof` 运算符)[^5]
#### 2. **指针遍历法**
通过指针算术运算直接访问内存地址:
```c
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int *p = arr; // 指针指向数组首地址
int len = sizeof(arr) / sizeof(int);
for(int i = 0; i < len; i++) {
printf("%d ", *p); // 解引用指针获取值
p++; // 指针移动到下一个元素地址
}
// 输出:10 20 30 40 50
return 0;
}
```
**特点**:
- 更接近底层内存操作
- 效率略高于下标法(编译器优化后差异很小)
- 适用于连续内存访问场景[^4]
#### 关键注意事项:
1. **数组长度计算**:
```c
int len = sizeof(arr) / sizeof(arr[0]); // 正确方法[^5]
```
错误做法:`int len = sizeof(arr);`(得到的是总字节数)
2. **越界访问风险**:
```c
// 错误示例:i <= len 会导致访问arr[len](越界)
for(int i = 0; i <= len; i++) { ... }
```
3. **函数参数传递**:
当数组作为函数参数时,会退化为指针,需显式传递长度:
```c
void printArray(int arr[], int len) { ... }
```
---
### 性能对比
| 方法 | 优点 | 缺点 |
|------------|--------------------------|----------------------|
| 下标遍历 | 可读性强,支持随机访问 | 多次计算地址 |
| 指针遍历 | 内存访问效率高 | 可读性稍差 |
实际测试中,现代编译器对两种方式的优化效果相当[^4]。
阅读全文
相关推荐



















