開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C
問題(Question):
int main(void)
{
int a[5]={0,1,2,3,4};
int i = 0;
while( (a+i) != NULL )
{
printf("%d ",*(a + i));
i++;
if(i == 100) break; //假如跑無窮迴圈,就跳出。
}
printf("\n");
system("PAUSE");
return 0;
}
我的問題是我想要任意陣列去寫,想試試看將陣列改為指標,
可是我為什麼會跑無窮迴圈?
不要去想記憶體要怎麼表現, 你只需要知道array長度施主,這個問題應該要問你自己
你一直無限迴圈不就是[表現沒配置到的記憶體空間]嗎
作者: jaid (jaid) 2015-04-14 22:29:00
sizeof()
作者:
kwpn (ITSST)
2015-04-15 18:15:00你明明知道a[5]是5個, 怎會想不出怎跳出loop
作者:
LPH66 (-6.2598534e+18f)
2015-04-16 00:34:00你可以思考為什麼 C 字串需要一個 '\0' 結尾這個 '\0' 就是在不知道長度的狀況下的變通法
作者:
LPH66 (-6.2598534e+18f)
2015-04-16 03:15:00觀念不限在字元陣列, 只是 '\0' 這玩意就要換成適當的東西
作者:
kwpn (ITSST)
2015-04-16 13:18:00請問哪來的未知長度陣列? 宣告一個靜態陣列, 你跟編譯器都知道(呼叫sizeof()取的到長度,就是因為編譯器知道),宣告動態陣列,也要執行期指定陣列的長度,這時把長度用另外的變數記下來不就好了?(就像std::vector在做的事)假設不是結尾有特定的定義(如字串的'\0'),又假設你不知道長度,那你只好自己定義條件。
作者: play714 (play) 2015-04-19 00:51:00
如果陣列都是存正整數,可以寫成while(*(a+i) >=0)
作者:
hakman (^____^)
2015-04-20 06:23:00使用 沒配置到的記憶體空間 是不被允許的 通常OS會去檔掉建議是暫時不要往這方面想 要想任意矩陣都可使用,有其它的方法可以實現