考虑http://c-faq.com/misc/hexio.html处的示例,有一个额外指向“静态”字符缓冲区的原因是什么?为什么我们无法逃脱retbuf
?
答案 0 :(得分:3)
如果没有static
关键字,缓冲区将在堆栈上分配 - 并在函数返回调用者时解除分配。
使用static
可确保函数返回后缓冲区有效。
答案 1 :(得分:0)
您需要一个指针,以便存储更改的地址。如果您只有retbuf
,则必须设计函数以使用更改的索引变量。 E.g:
int ind = sizeof(retbuf)-1;
retbuf[ind] = '\0';
等
请注意,数组不是指针。数组是固定大小的内存区域。指针是一个地址。