以指標算術實作兩陣列尋找首個相同值,展示 `while` 迴圈配合指標遞增的寫法。
#include
int *searchSameElement(int *a, int *b, int len1, int len2) {
int *pa = a, *pb = b;
while (pa < a + len1) {
pb = b; /* 內層每次重置 */
while (pb < b + len2) {
if (*pa == *pb) return pa;
pb++;
}
pa++;
}
return NULL;
}
int main() {
int a[] = {4, 51, 8, 6, 7, 10};
int b[] = {80, 8, 10, 90, 7, 10, 51};
int len1 = sizeof(a)/sizeof(a[0]);
int len2 = sizeof(b)/sizeof(b[0]);
int *pt = searchSameElement(a, b, len1, len2);
if (pt) printf("%d\n", *pt);
else printf("the same number don not find!\n");
return 0;
}
指標算術 (`pa++`, `pa < end`) 是 C 語言處理陣列遍歷的地道風格,掌握後可靈活應用於各類線性搜尋演算法。