หมายเหตุ C ++: การเริ่มต้นอาร์เรย์มีรายการที่ดีเกี่ยวกับการเริ่มต้นของอาร์เรย์ ฉันมี
int array[100] = {-1};
คาดหวังว่ามันจะเต็มไปด้วย -1 แต่ไม่ใช่เพียงค่าแรกคือและส่วนที่เหลือเป็น 0 ผสมกับค่าสุ่ม
รหัส
int array[100] = {0};
ทำงานได้ดีและตั้งค่าแต่ละองค์ประกอบเป็น 0
ฉันจะพลาดอะไรที่นี่ .. ไม่สามารถเริ่มต้นได้หากค่าไม่เป็นศูนย์?
และ 2: การเริ่มต้นเริ่มต้น (ดังกล่าว) เร็วกว่าการวนซ้ำทั่วทั้งอาร์เรย์และกำหนดค่าหรือทำสิ่งเดียวกันหรือไม่?
{0}
ไม่ใช่กรณีพิเศษสำหรับ structs หรืออาร์เรย์ กฎคือองค์ประกอบที่ไม่มี initializer รับการเริ่มต้นราวกับว่าพวกเขามี0
สำหรับ initializer หากมีการรวมที่ซ้อนกัน (เช่นstruct x array[100]
) การเริ่มต้นจะถูกนำไปใช้กับการไม่รวมในลำดับ "แถวหลัก" วงเล็บอาจเลือกที่จะละเว้นการทำเช่นนี้ struct x array[100] = { 0 }
ถูกต้องใน C; และใช้ได้ใน C ++ ตราบใดที่สมาชิกรายแรกstruct X
ยอมรับ0
ว่าเป็น initializer
{ 0 }
ไม่ได้เป็นพิเศษใน C แต่มันยากมากที่จะกำหนดชนิดของข้อมูลที่ไม่สามารถเริ่มต้นกับมันเนื่องจากไม่มีการก่อสร้างและทำให้วิธีการที่จะไม่หยุด0
จากการแปลงโดยปริยายและมอบหมายให้บางสิ่งบางอย่าง