問題1:C++標準是否保證使用{} /()進行初始化會默認爲「0」?
struct S
{
size_t size;
int j;
int k;
int l;
};
S s={sizeof(S)};
合乎理C++標準說,上面的{}將初始化 「J,K,L」 爲0? 似乎它會做,它是CPP標準的一部分?
問題2:
int main()
{
int* pi=new int[5];
for(int i=0;i<5;++i)
cout<<pi[i]<<',';
return 0;
}
在這裏,在指針元素數組(PI)未初始化,我的運行結果可能看起來像
6785200,6782912,0,0,0,
但是,如果我將其更改爲
int main()
{
int* pi=new int[5]();//use()
for(int i=0;i<5;++i)
cout<<pi[i]<<',';
return 0;
}
然後,所有的pi元素都是「0」。似乎「()」會給元素一個「0」值。這是cpp標準的一部分嗎?
我也想給使用其他值 「()」 是這樣的:
int* pi=new int[5](7);
但它無法編譯。我怎麼能給所有元素具有相同值的數組指針賦予初始化值?
你真的應該問每個問題一個問題。把他們三個混在一起會讓答案更難,而其他人則難以尋找答案。 – SCFrench
@SCFrench「每個問題提出一個問題」。不,我們在初始化規則上不需要十億次置換。 –
睡得很緊的傀儡 - http://meta.stackexchange.com/a/268261 – SCFrench