數組循環當我嘗試通過下面的C程序循環,我得到的錯誤:「段錯誤:11」Ç - 通過指針
#include <stdio.h>
main() {
int i;
char *a[] = {
"hello",
"how are you",
"what is your name"
};
for (i = 0; a[i][0] != '\0'; i++) {
printf("\n%s", a[i]);
}
}
但是,當我更換測試中for
循環與以下,然後我沒有得到一個錯誤,一切正常。
for (i = 0; i < 3; i++) {
printf("\n%s", a[i]);
}
我會很感激,如果有人可以給我解釋爲什麼測試a[i][0] != '\0'
不起作用,什麼我應該做的,而不是。
'for(i = 0; i <3; i ++){...}'::沒有前哨。 – wildplasser
我認爲其他人都擁有它,但我只是在數組未定義之後添加內存。這實際上是可能的(如果你真的擁有內存之後的內存,那麼你的代碼將工作的時間是1/256倍)。它完全沒有定義。 C中的數組沒有內置大小。你必須跟你的數組並行追蹤大小,這就是你的<3檢查工作的原因。或者,sizeof,你必須跟蹤類型。當你將數組傳遞給一個函數時,它會變成一個指針,然而你失去了sizeof。 – xaxxon