C++标准有没有保证说,用{}/()初始化默认是赋0值?
问题1:struct S
{
size_t size;
int j;
int k;
int l;
};
S s={sizeof(S)};
C++标准有没有说,上面这种{}的初始化方式,会把j,k,l都赋成0值?
标准文档里面有说道吗?
问题2:
int main()
{
int* pi=new int;
for(int i=0;i<5;++i)
cout<<pi<<',';
return 0;
}
这里pi的5个值都是没有初始化的,我运行的结果可能是:
6785200,6782912,0,0,0,
而如果我改成
int main()
{
int* pi=new int();//use ()
for(int i=0;i<5;++i)
cout<<pi<<',';
return 0;
}
这样,那么pi的5个元素打印出来就一定是0.
C++标准有没有规定指针数组也可以用()来赋值,()内不指定就是0?
很奇怪的是,如果我在括号里面指定一个初始值,例如7:
int* pi=new int(7);
那么这句话就编译不过了,为什么不行呢?
我希望把pi里面的元素都赋值为7,能否在初始化的时候就做到? 有
为了凑字符,有下面三个初始化
zero-initialization
default-initialize
value-initialize 明明有一些简单的做法可以规避问题和风险,你偏偏要研究编译器行为
高级语言的习惯不能刻舟求剑哦
页:
[1]