我最近在 C
中遇到了三种不同的情况,我会在以下方面提供帮助:
我的
C
代码有一个全局变量:int ref_buf; //declared in a header file
在函数定义中,我使用与参数相同的名称:
void fun(int ref_buf, param2, param3) { }
会不会覆盖原来定义的全局变量,会不会导致bug?
我可以像这样在
C
数据结构中声明静态变量吗?:struct my { int a; static int b; };
有用吗?有什么特定情况需要它吗?
我可以按如下方式初始化单个结构变量吗:
struct my { int a; int b = 4; };
最佳答案
问题一
该函数中对 ref_buf 的所有引用都将绑定(bind)到参数而不是全局变量。
问题2
这在 C 中是不合法的,但在 C++ 中是合法的。 C 中的关键字 static 只能用于文件范围变量或局部变量。
问题3
不,这在 C(或 C++)中是不合法的。您将需要创建一个工厂方法来处理这个问题。
my create_my() {
my m;
m.b = 4;
return m;
}
关于结构中的 C 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806931/