2011-01-12 55 views

回答

0

您需要一個指針,以便您可以存儲更改的地址。如果你只有retbuf,你將不得不設計這個函數來使用一個變化的索引變量。例如: -

int ind = sizeof(retbuf)-1; 
retbuf[ind] = '\0'; 

注意數組不是指針。數組是固定大小的內存區域。指針是一個地址。

+0

感謝您的輸入,但我仍然沒有完全理解。考慮以上代碼片段: static char retbuf [33]; char * p; p =&retbuf [sizeof(retbuf)-1]; 爲什麼我們需要保留額外的指針'p'到'retbuf'?如果我們填入'retbuf',然後從函數中返回('return retbuf'),它將始終指向緩衝區的第一個元素,我在這裏錯了嗎? – Mark 2011-01-12 23:56:09

+0

@Mark,首先,`p`並不總是等於函數末尾的`retbuf`的第一個元素。作爲一個簡單的例子,如果`num`爲0,`p`將保持等於'retbuf + sizeof(retbuf) - 1`。其次,在函數中使用*來跟蹤要寫入哪個位置。 – 2011-01-13 00:07:25

3

如果沒有static關鍵字,緩衝區將被分配到堆棧上 - 並在函數返回給調用者時釋放。使用static確保緩衝區在函數返回後有效。

相關問題