我想了解外部联系和内部联系及其区别.
我也想知道的意思
const默认情况下,变量内部链接,除非另有声明extern.
我是学生,我对C和C++中的全局和文件范围变量感到困惑.这两种观点有什么不同吗?如果是,请详细说明.
C++默认初始化不会将变量与自动存储器清零,为什么对静态存储变量进行特殊处理?
它是由C和C++定义的东西必须兼容吗?如果是这样的话,为什么C决定进行零初始化?
如果文件范围静态变量与初始化程序一起提供,它们将首先进行零初始化,然后再次进行常量/动态初始化.这不是多余的吗?例如,以下代码来自cppreference:http://en.cppreference.com/w/cpp/language/zero_initialization
#include <string>
double f[3]; // zero-initialized to three 0.0's
int* p; // zero-initialized to null pointer value
std::string s; // zero-initialized to indeterminate value
// then default-initialized to ""
int main(int argc, char* argv[])
{
static int n = argc; // zero-initialized to 0
// then copy-initialized to argc
delete p; // safe to delete a null pointer
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,为什么n不能直接初始化为argc?
编辑:这个问题的一部分已经回答了这里的问题:静态变量初始化? 但我不认为这是重复的,因为另一个问题的答案没有回答我的第二个问题,即.为什么2阶段初始化.此外,另一篇文章的标题并没有真正说明究竟是什么问题.