c语言如何用双指针遍历两个数组,请举例说明
时间: 2024-10-25 09:08:12 浏览: 12
C语言第讲指针与字符串字符数组PPT课件.pptx
在C语言中,使用双指针技术遍历两个数组通常是为了找到它们中相等元素的位置,或者比较两个数组的长度、合并等操作。以下是简单的例子,假设我们有两个一维整型数组`arr1`和`arr2`:
```c
#include <stdio.h>
void traverseArrays(int arr1[], int arr2[], int len1, int len2) {
int i = 0; // 指向arr1的第一个元素
int j = 0; // 指向arr2的第一个元素
int k = 0; // 比较位置
while (i < len1 && j < len2) { // 当两个指针都未超出数组范围
if (arr1[i] == arr2[j]) { // 如果当前元素相等
printf("Element %d in both arrays is at index %d\n", arr1[i], k);
i++; // 都移动到下一个元素
j++;
} else if (arr1[i] < arr2[j]) { // 如果arr1的元素小
i++; // 移动arr1指针
} else { // arr2的元素大
j++; // 移动arr2指针
}
k++; // 无论哪种情况,我们都增加比较位置
}
if (i < len1 || j < len2) {
printf("One array ends before the other.\n");
}
}
int main() {
int arr1[] = {1, 3, 5, 7};
int arr2[] = {2, 4, 6, 8};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
traverseArrays(arr1, arr2, len1, len2);
return 0;
}
```
在这个示例中,双指针`i`和`j`同时遍历两个数组,如果发现相同的元素,就输出其索引并继续移动。若一个数组先遍历完,则表示另一个数组包含剩余元素。
阅读全文