2011-01-12 59 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确保缓冲区在函数返回后有效。

相关问题