คงที่ {ประเภทข้อมูล} {ชื่อตัวแปร}
ตัวแปรท้องถิ่นแบบคงที่
เมื่อตัวแปรในฟังก์ชันคงที่ ตัวแปรจะคงค่าไว้ระหว่างการเรียกใช้ฟังก์ชัน
//Example1.c
#รวม
intfun1()
{
intนับ=0;
นับ++;
กลับนับ;
}
intfun2()
{
คงที่ intนับ=0;
นับ++;
กลับนับ;
}
intหลัก()
{
printf ('fun1 การโทรกลับครั้งแรก : %dNS',fun1());
printf ('fun1 การโทรคืนครั้งที่ 2 : %dNSNS',fun1());
printf ('fun2 การโทรกลับครั้งแรก : %dNS',fun2());
printf ('fun2 โทรกลับครั้งที่ 2 : %dNS',fun2());
กลับ 0;
}
ในตัวอย่างที่ 1.c เรามีสองฟังก์ชัน: สนุก1() และ สนุก2() . ใน สนุก1() เราประกาศตัวแปรหนึ่งตัว (นับ) และเริ่มต้นเป็น 0 จากนั้นเราเพิ่มตัวแปรการนับและส่งกลับค่าผลลัพธ์ โดยใช้ หลัก() , เราเรียก สนุก1() สองครั้ง และในแต่ละครั้ง ค่า 1 จะถูกส่งกลับเนื่องจากตัวแปรการนับจะถูกล้างเมื่อมีการเรียกไปยัง สนุก1() เสร็จสมบูรณ์ ใน สนุก2() เราประกาศตัวแปรการนับเป็นตัวแปรคงที่ ดังนั้นคุณค่าของมันจึงถูกรักษาไว้ โดยใช้ หลัก() , เราเรียก สนุก2() สองครั้ง: ครั้งแรก ค่า 1 ถูกส่งกลับ และครั้งที่สอง ค่าของ 2 จะถูกส่งกลับ
ตัวแปรโกลบอลคงที่
ตัวแปรโกลบอลแบบคงที่ทำงานในลักษณะเดียวกับตัวแปรโกลบอลอื่น ๆ แต่ไม่สามารถเข้าถึงได้จากโปรแกรม C อื่น
ฟังก์ชันคงที่
ใน C ฟังก์ชันจะเป็นโกลบอลตามค่าเริ่มต้น อย่างไรก็ตาม หากเราประกาศฟังก์ชันสแตติก ฟังก์ชันนั้นจะอยู่ในเครื่องและไม่สามารถเข้าถึงได้จากโปรแกรม C อื่น
การเริ่มต้นของตัวแปรคงที่
หากตัวแปรสแตติกไม่ได้ถูกกำหนดค่าเริ่มต้นไว้อย่างชัดเจน ตัวแปรนั้นจะถูกตั้งค่าเริ่มต้นเป็น 0
//Example2.c
#รวม
intหลัก()
{
คงที่ intผม;
printf ('คุณค่าของผม : %dNS',ผม);
กลับ 0;
}
ใน Example2.c เราประกาศตัวแปรสแตติก i ที่ไม่ได้เริ่มต้น อย่างไรก็ตาม เนื่องจากตัวแปรเป็นแบบสแตติก ตัวแปรจึงเริ่มต้นเป็น 0 โดยอัตโนมัติ
สิ่งสำคัญคือต้องสังเกตว่าตัวแปรสแตติกต้องเริ่มต้นโดยค่าคงที่ตามตัวอักษร เราไม่สามารถใช้ค่าส่งคืนของฟังก์ชันเพื่อเริ่มต้นตัวแปรสแตติกได้
//Example3.c#รวม
intfun1()
{
กลับ 5;
}
intหลัก()
{
คงที่ intผม=fun1();
printf ('คุณค่าของผม : %dNS',ผม);
กลับ 0;
}
ใน Example3.c เราพยายามเริ่มต้นตัวแปรสแตติกโดยใช้ค่าส่งคืนของ สนุก1() . อย่างไรก็ตาม อย่างที่คุณเห็น ข้อผิดพลาดจะถูกส่งคืนเมื่อมีการคอมไพล์โค้ด
สรุป
อายุการใช้งานของตัวแปรคงที่และอายุการใช้งานของโปรแกรมเท่ากัน
หากตัวแปรสแตติกไม่ได้เริ่มต้น จะใช้ค่าเริ่มต้นเป็น 0
ทั้งตัวแปรสแตติกส่วนกลางและฟังก์ชันสแตติกไม่สามารถเข้าถึงได้จากโปรแกรมอื่นนอกเหนือจากที่กำหนดไว้