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

อธิบายตัวระบุประเภทที่ผันผวนและจำกัดใน C ด้วยตัวอย่าง


ตัวระบุประเภทเพิ่มคุณสมบัติพิเศษให้กับประเภทข้อมูลที่มีอยู่ในภาษาการเขียนโปรแกรม C

อธิบายตัวระบุประเภทที่ผันผวนและจำกัดใน C ด้วยตัวอย่าง

ตัวระบุประเภทในภาษาซีมีสามประเภท และตัวระบุประเภทที่ผันผวนและจำกัดได้อธิบายไว้ด้านล่าง -

ผันผวน

ตัวระบุชนิดระเหยใช้เพื่อบอกคอมไพเลอร์ว่ามีการใช้ตัวแปรร่วมกัน กล่าวคือ ตัวแปรอาจถูกอ้างอิงและเปลี่ยนแปลงโดยโปรแกรมอื่น (หรือ) เอนทิตีหากมีการประกาศเป็นความผันผวน

ตัวอย่างเช่น ความผันผวน int x;

จำกัด

ใช้เฉพาะกับพอยน์เตอร์เท่านั้น บ่งชี้ว่าตัวชี้เป็นเพียงวิธีเริ่มต้นในการเข้าถึงข้อมูลอ้างอิง มันให้ความช่วยเหลือเพิ่มเติมแก่คอมไพเลอร์เพื่อการเพิ่มประสิทธิภาพ

ตัวอย่างโปรแกรม

ต่อไปนี้เป็นโปรแกรม C สำหรับตัวระบุประเภทระเหย -

   int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Cannot be replaced with *ptr+=9
   ____
   ____
   ____
      *ptr+=5;

ในที่นี้ คอมไพเลอร์ไม่สามารถแทนที่สองคำสั่ง *ptr+=4 และ *ptr+=5 ด้วยคำสั่งเดียว *ptr+=9 เนื่องจากไม่ชัดเจนว่าตัวแปร 'a' สามารถเข้าถึงได้โดยตรง (หรือ) ผ่านพอยน์เตอร์อื่นหรือไม่

ตัวอย่างเช่น

   restrict int *ptr
   int a= 0;
   ptr = &a;
   ____
   ____
   ____
      *ptr+=4; // Can be replaced with *ptr+=9
   ____
   ____
      *ptr+=5;
____
   ____

ที่นี่ คอมไพเลอร์สามารถแทนที่สองคำสั่งด้วยคำสั่งเดียว *ptr+=9 เพราะแน่นอนว่าไม่สามารถเข้าถึงตัวแปรผ่านแหล่งข้อมูลอื่นได้

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับการใช้คีย์เวิร์ดที่จำกัด -

#include<stdio.h>
void keyword(int* a, int* b, int* restrict c){
   *a += *c;
   // Since c is restrict, compiler will
   // not reload value at address c in
   // its assembly code.
   *b += *c;
}
int main(void){
   int p = 10, q = 20,r=30;
   keyword(&p, &q,&r);
   printf("%d %d %d", p, q,r);
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

40 50 30