Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เหตุใดตัวแปรโกลบอลและสแตติกจึงเริ่มต้นเป็นค่าเริ่มต้นใน C/C++


ตัวแปรโกลบอลและสแตติกถูกกำหนดค่าเริ่มต้นเป็นค่าดีฟอลต์ เนื่องจากอยู่ในมาตรฐาน C หรือ C++ และกำหนดค่าเป็นศูนย์ได้ฟรีในขณะที่คอมไพล์ ทั้งตัวแปรแบบคงที่และแบบโกลบอลจะทำงานเหมือนกันกับโค้ดอ็อบเจ็กต์ที่สร้างขึ้น ตัวแปรเหล่านี้ได้รับการจัดสรรในไฟล์ .bss และในขณะที่โหลด ตัวแปรจะจัดสรรหน่วยความจำโดยการรับค่าคงที่ที่จัดสรรให้กับตัวแปร

ต่อไปนี้คือตัวอย่างตัวแปรโกลบอลและสแตติก

ตัวอย่าง

#include int a;static int b;int main() { int x; คงที่ int y; int z =28; printf("ค่าเริ่มต้นของตัวแปรโกลบอล a :%d", a); printf("\nค่าเริ่มต้นของตัวแปรสแตติกส่วนกลาง b :%d", b); printf("\nค่าเริ่มต้นของตัวแปรท้องถิ่น x :%d", x); printf("\nค่าเริ่มต้นของตัวแปรสแตติกในเครื่อง y :%d", y); printf("\nค่าของตัวแปรท้องถิ่น z :%d", z); คืนค่า 0;}

ผลลัพธ์

ค่าดีฟอลต์ของตัวแปรส่วนกลาง a :0ค่าดีฟอลต์ของตัวแปรสแตติกส่วนกลาง b :0ค่าดีฟอลต์ของตัวแปรโลคัล x :0ค่าดีฟอลต์ของตัวแปรสแตติกในเครื่อง y :0ค่าของตัวแปรโลคัล z :28

ในโปรแกรมข้างต้น ตัวแปรโกลบอลจะถูกประกาศนอกฟังก์ชัน main() และหนึ่งในนั้นคือตัวแปรสแตติก มีการประกาศตัวแปรโลคัลสามตัวและตัวแปร z ก็ถูกเตรียมใช้งานเช่นกัน

int a;static int b;….int x;static int y;int z =28;

ค่าเริ่มต้นจะถูกพิมพ์

printf("ค่าเริ่มต้นของตัวแปรโกลบอล a :%d", a);printf("\nค่าเริ่มต้นของตัวแปรสแตติกส่วนกลาง b :%d", b);printf("\nค่าเริ่มต้นของโลคัล ตัวแปร x :%d", x);printf("\nค่าดีฟอลต์ของตัวแปรสแตติกในเครื่อง y :%d", y);printf("\nค่าของตัวแปรโลคัล z :%d", z);