作者 主題: 陣列本身會傳回一個值嗎?  (閱讀 3294 次)

0 會員 與 1 訪客 正在閱讀本文。

make026

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
陣列本身會傳回一個值嗎?
« 於: 2011-10-10 12:13 »
大家好! :)

我寫了一個程式如下,所以有了陣列會不會傳回一個值這種疑問。
代碼: [選擇]
#include <stdio.h>

int main()
{
char ch[100]="A dog is running out!";

int i;
for(i=0; i<=20; i++){
printf("%c",ch[i]);
}
printf("\n");

//What is the situation of for()-loop ?
for(i=0; ch[i]; i++){ //Does an array return a value? //What is that value?
printf("%c",ch[i]);
}
printf("\n");

return 0;
}

程式會正常輸出:
A dog is running out!
A dog is running out!

我的問題點就在第二個 for() 迴圈的條件的陣列。 ???
« 上次編輯: 2011-10-10 12:44 由 make026 »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: 陣列本身會傳回一個值嗎?
« 回覆 #1 於: 2011-10-10 13:27 »
大家好! :)

我寫了一個程式如下,所以有了陣列會不會傳回一個值這種疑問。
代碼: [選擇]
#include <stdio.h>

int main()
{
char ch[100]="A dog is running out!";

int i;
for(i=0; i<=20; i++){
printf("%c",ch[i]);
}
printf("\n");

//What is the situation of for()-loop ?
for(i=0; ch[i]; i++){ //Does an array return a value? //What is that value?
printf("%c",ch[i]);
}
printf("\n");

return 0;
}

程式會正常輸出:
A dog is running out!
A dog is running out!

我的問題點就在第二個 for() 迴圈的條件的陣列。 ???


1. 『陣列會不會傳回一個值』這說法很奇怪
對陣列來說, 陣列裡的每一個元素本身就是一個『值』

2. for 迴圈的條件式, 是判斷式為真就繼續執行, 判斷式為假就停止執行
所以上面判斷式是判斷 ch[ i ] 的值是『真』還是『假』
當 ch 被填入指定的字串, 由於指定的字串長度不足
陣列後面剩餘的空間會被自動填入『\0』
印完『!』之後, 陣列的下一個元素值是『\0』(false)
所以就『正常』結束迴圈

make026

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
Re: 陣列本身會傳回一個值嗎?
« 回覆 #2 於: 2011-10-10 14:25 »
1. 『陣列會不會傳回一個值』這說法很奇怪
對陣列來說, 陣列裡的每一個元素本身就是一個『值』

2. for 迴圈的條件式, 是判斷式為真就繼續執行, 判斷式為假就停止執行
所以上面判斷式是判斷 ch[ i ] 的值是『真』還是『假』
當 ch 被填入指定的字串, 由於指定的字串長度不足
陣列後面剩餘的空間會被自動填入『\0』
印完『!』之後, 陣列的下一個元素值是『\0』(false)
所以就『正常』結束迴圈

謝謝大大的回覆,我明白為什麼了。 :)
ch[21] 會自動被填入空字元。
當 i=21 時, 第二個 for() 迴圈的條件變為 false ,所以會正常的結束。
« 上次編輯: 2011-10-10 14:29 由 make026 »