ตัวระบุประเภทเพิ่มคุณสมบัติพิเศษให้กับประเภทข้อมูลที่มีอยู่ในภาษาการเขียนโปรแกรม 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