คงที่ในการเขียนโปรแกรม C

Static C Programming



ในบทช่วยสอนนี้ เราจะอธิบายคำหลักแบบคงที่โดยนำไปใช้กับตัวแปรและฟังก์ชัน Static เป็นคีย์เวิร์ดที่ใช้ในการเขียนโปรแกรม C และสามารถใช้ได้โดยใช้ไวยากรณ์ต่อไปนี้:

คงที่ {ประเภทข้อมูล} {ชื่อตัวแปร}







ตัวแปรท้องถิ่นแบบคงที่

เมื่อตัวแปรในฟังก์ชันคงที่ ตัวแปรจะคงค่าไว้ระหว่างการเรียกใช้ฟังก์ชัน



//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

ทั้งตัวแปรสแตติกส่วนกลางและฟังก์ชันสแตติกไม่สามารถเข้าถึงได้จากโปรแกรมอื่นนอกเหนือจากที่กำหนดไว้