24得票4回答
"文件作用域"和"程序作用域"有什么区别?

全局声明的变量具有程序作用域。 使用static关键字全局声明的变量具有文件作用域。 例如:int x = 0; // **program scope** static int y = 0; // **file scope** static flo...

24得票4回答
一个变量是否可以同时声明为static和extern?

为什么以下代码无法编译?... extern int i; static int i; ... 但如果您颠倒顺序,它会编译成功。... static int i; extern int i; ... 这里发生了什么事?

24得票4回答
C++中auto关键字的困惑

我对以下代码感到困惑:#include <iostream> using namespace std; int *foo() { //Operation } int main () { auto int ret = foo(); } 我在GCC下编译了上述...

21得票3回答
在声明中,存储类说明符可以放置在哪里?

例如,让我们考虑一下static存储类说明符。以下是这个存储类说明符的一些有效和不合法使用示例:static int a; // valid int static b; // valid static int* c; // valid int stat...

17得票2回答
我们可以在声明中的任何位置放置 "typedef" 指定符吗?

typedef 指定符的语法:typedef <existing_name> <alias_name> 例如: for example:typedef long unsigned int Int; 它运行良好。 但是,如果我在声明中的任何位置放置 typedef,就像...

15得票1回答
为什么可变指示符被归类为存储类指示符而不是限定符?

当在非静态数据成员的声明中使用mutable说明符时,无论对象的其余部分是否被视为常量,该数据都是可变的。由此可以得出印象:mutable说明符与const限定符是同一类型的东西,然而实际上并不是。事实上,语言将mutable说明符分类为存储类说明符。这相当令人费解,因为mutable并没有指...

11得票6回答
当我们可以用相同的代价得到一个全局变量时,静态局部变量有什么用处?

在C语言中,即使外部变量可以以相同的成本满足其目的(即二者都占用可执行文件的数据段中的存储空间),静态存储类的作用是什么? 我更喜欢使用外部变量。如果我想使外部变量的作用域限定在特定的文件中,则不会在其他地方声明该变量。相对于静态局部变量,全局变量具有更高的灵活性。 如果我们拥有变量的地址...

10得票2回答
C++11中是否可以使用'auto'关键字作为存储类别说明符?

auto 关键字可以在C++11中用作存储类别限定符吗? 以下代码在C++11中是否合法?int main() { auto int x; }

10得票4回答
多文件中的外部变量声明和可能的重复定义问题

我将以下代码一起编译运行,命令为:gcc A.c B.c -o combined 程序A:#include<stdio.h> int a=1; int b; int main() { extern int a,b; fun(); printf("%d %d\n",a,b); } 程...

9得票1回答
什么是纯变量?

我很惊讶地发现这段代码可以编译: pure string Foo = SomePureFunction(123); pure 在在线文档中只在函数上下文中提到。 pure 变量是什么,它们与 immutable 和 const 有何不同?