作者Colac (漂泊吉他手)
看板Electronics
標題Re: [問題]問個c語言問題
時間Sat Feb 24 23:24:35 2007
※ 引述《adddream (哆啦A孟)》之銘言:
: 假設傳遞一個字串給函數strpcy
: strpcy(s,t)
: char *s, *t;
: {
: while(*s++ = *t++);
: }
: 請問
: (1)為什麼當t指向'\0'時 while會停止迴圈
字串是以'\0'字元當結尾,
所以assign t字串的每個字元給s字串, 直到碰到'\0'字元,
也就是 while( '\0' ), 就跳出迴圈了.
: (2)為什麼當*s 和 *t 宣告為 int 時 , while迴圈無停止機制
整數陣列沒有以'\0'當結尾的機制,
另外, while迴圈並不是不會停止, 只是沒遇到被assign成整數0的情況,
或是代表false的整數的情況, *t++一直run下去抓到的值是隨機的,
但通常會程式錯誤關閉才對, 因為access到未事先宣告的記憶體區塊.
: 以上
: 謝謝各位大大了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.198.193