示範以指標遍歷兩陣列尋找首個相同值,並展示 `goto` 標籤跳出多層迴圈的寫法 (教學用,實務建議用旗標或函數回傳)。
#include
int *searchSameElement(int *a, int *b, int len1, int len2);
int main() {
int a[] = {5, 11, 8, 6, 7, 10};
int b[] = {80, 9, 14, 8, 14, 19, 4};
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;
}
int *searchSameElement(int *a, int *b, int len1, int len2) {
int *temp = a;
for (int i = 0; i < len1; i++) {
for (int j = 0; j < len2; j++) {
if (*(a+i) == *(b+j)) {
temp = a + i;
goto loop; /* 跳出雙層迴圈 */
}
if (j == len2 - 1) break; /* 內層跑完未找到,續外層 */
}
if (i == len1 - 1) { /* 外層也跑完 */
temp = 0;
goto loop;
}
}
loop:
return temp;
}
int *searchSorted(int *a, int *b, int len1, int len2) {
int i = 0, j = 0;
while (i < len1 && j < len2) {
if (a[i] == b[j]) return a + i;
else if (a[i] < b[j]) i++;
else j++;
}
return NULL;
}