[問題] C 語言陣列用指標寫

作者: chinagogoya (下棋逍遙遊)   2015-04-14 16:00:57
開發平台(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;
}
我的問題是我想要任意陣列去寫,想試試看將陣列改為指標,
可是我為什麼會跑無窮迴圈?
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-04-14 16:16:00
因為 a+i 永遠也不會 == NULL
作者: chinagogoya (下棋逍遙遊)   2015-04-14 16:18:00
所以要想想看怎麼寫?
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-04-14 16:20:00
施主,這個問題應該要問你自己
作者: Jockey66666 (往事已成追憶)   2015-04-14 16:34:00
不要去想記憶體要怎麼表現, 你只需要知道array長度施主,這個問題應該要問你自己
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-04-14 18:16:00
你一直無限迴圈不就是[表現沒配置到的記憶體空間]嗎
作者: 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' 就是在不知道長度的狀況下的變通法
作者: TobyH4cker (Toby (我要當好人))   2015-04-16 01:42:00
前提是字元陣列才有效
作者: 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會去檔掉建議是暫時不要往這方面想 要想任意矩陣都可使用,有其它的方法可以實現

Links booklink

Contact Us: admin [ a t ] ucptt.com