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