以下短语在C++中的含义是什么:
零初始化,
默认初始化,和
值初始化
C++开发人员应该了解他们什么?
全局内存是用C++初始化的吗?如果是这样,怎么样?
(二)澄清:
当程序启动时,在初始化基元之前,内存空间中的内容将成为全局内存?我试图了解它是否被清零,或者例如垃圾.
情况是:可以instance()在初始化之前通过调用设置单例引用:
MySingleton* MySingleton::_instance = NULL;
Run Code Online (Sandbox Code Playgroud)
并获得两个单例实例?
在单个多个实例上查看我的C++测验...
我无法理解这一点.请解释.
编辑:它打印:'hello, world!'
#include <stdio.h>
int i;
main()
{
for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\o, world!\n",'/'/'/'));
//For loop executes once, calling function read with three arguments.
}
read(j,i,p)
{
write(j/p+p,i---j,i/i); //how does it work? like printf?
}
Run Code Online (Sandbox Code Playgroud) 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阶段初始化.此外,另一篇文章的标题并没有真正说明究竟是什么问题.
我尝试了这些代码行,发现令人震惊的输出。我期待一些与初始化相关的原因,无论是一般还是for循环。
1.)
int i = 0;
for(i++; i++; i++){
if(i>10) break;
}
printf("%d",i);
Run Code Online (Sandbox Code Playgroud)
输出-12
2.)
int i;
for(i++; i++; i++){
if(i>10) break;
}
printf("%d",i);
Run Code Online (Sandbox Code Playgroud)
输出-1
我希望语句“ int i = 0”和“ int i”相同。它们之间有什么区别?