为什么函数中有'静态'定义?

时间:2011-01-12 07:11:39

标签: c static

考虑http://c-faq.com/misc/hexio.html处的示例,有一个额外指向“静态”字符缓冲区的原因是什么?为什么我们无法逃脱retbuf

2 个答案:

答案 0 :(得分:3)

如果没有static关键字,缓冲区将在堆栈上分配 - 并在函数返回调用者时解除分配。

使用static可确保函数返回后缓冲区有效。

答案 1 :(得分:0)

您需要一个指针,以便存储更改的地址。如果您只有retbuf,则必须设计函数以使用更改的索引变量。 E.g:

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

请注意,数组不是指针。数组是固定大小的内存区域。指针是一个地址。