繁体   English   中英

为什么在函数中有“静态”定义?

[英]Why have a 'static' definition in a function?

考虑http://c-faq.com/misc/hexio.html上的示例,为什么有额外的指针指向“静态”字符缓冲区? 为什么我们不能摆脱retbuf

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

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

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

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

等等

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM