หากข้อมูลเป็นตัวแปรคงที่หรือทั่วโลกข้อมูลจะถูกเติมเป็นศูนย์ตามค่าเริ่มต้นดังนั้นเพียงแค่ประกาศ myStruct _m;
หากข้อมูลที่เป็นตัวแปรท้องถิ่นหรือโซนกองจัดสรรล้างมันด้วยmemset
เช่น:
memset(&m, 0, sizeof(myStruct));
คอมไพเลอร์ปัจจุบัน (เช่นเวอร์ชันล่าสุดgcc
) เพิ่มประสิทธิภาพที่ค่อนข้างดีในทางปฏิบัติ สิ่งนี้ใช้ได้เฉพาะในกรณีที่ค่าศูนย์ทั้งหมด (รวมถึงพอยน์เตอร์ว่างและจุดศูนย์ลอยตัว) แสดงเป็นศูนย์บิตทั้งหมดซึ่งเป็นจริงในทุกแพลตฟอร์มที่ฉันรู้ (แต่มาตรฐานCอนุญาตให้ใช้งานในกรณีที่เป็นเท็จฉันไม่รู้ว่าไม่มีการนำไปใช้) .
คุณอาจจะเขียนโค้ดmyStruct m = {};
หรือ myStruct m = {0};
(แม้ว่าสมาชิกตัวแรกmyStruct
จะไม่ใช่สเกลาร์ก็ตาม)
ความรู้สึกของฉันคือการใช้memset
โครงสร้างโลคัลเป็นสิ่งที่ดีที่สุดและมันบ่งบอกถึงความจริงที่ว่าในรันไทม์ต้องทำบางอย่างได้ดีขึ้น (ในขณะที่โดยปกติข้อมูลส่วนกลางและข้อมูลคงที่สามารถเข้าใจได้ว่าเริ่มต้นในเวลาคอมไพล์โดยไม่มีค่าใช้จ่ายใด ๆ ในรันไทม์) .
= {};
อย่างไรก็ตามฉันไม่แน่ใจว่าถูกต้องหรือไม่