टाइप क्वालिफायर सी प्रोग्रामिंग भाषा में मौजूदा डेटा प्रकारों में विशेष गुण जोड़ते हैं।
सी भाषा में तीन प्रकार के क्वालिफायर हैं और अस्थिर और प्रतिबंधित प्रकार के क्वालिफायर नीचे बताए गए हैं -
अस्थिर
एक वाष्पशील प्रकार के क्वालीफायर का उपयोग संकलक को यह बताने के लिए किया जाता है कि एक चर साझा किया गया है। यही है, एक चर को अन्य कार्यक्रमों (या) संस्थाओं द्वारा संदर्भित और बदला जा सकता है यदि इसे अस्थिर घोषित किया जाता है।
उदाहरण के लिए, वोलेटाइल इंट x;
प्रतिबंधित करें
इसका उपयोग केवल पॉइंटर्स के साथ किया जाता है। यह इंगित करता है कि सूचक केवल संदर्भ डेटा तक पहुँचने का एक प्रारंभिक तरीका है। यह अनुकूलन के लिए संकलक को अधिक सहायता प्रदान करता है।
उदाहरण कार्यक्रम
वोलेटाइल टाइप क्वालिफायर के लिए सी प्रोग्राम निम्नलिखित है -
int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Cannot be replaced with *ptr+=9 ____ ____ ____ *ptr+=5;से बदला नहीं जा सकता
यहाँ, संकलक दो कथनों *ptr+=4 और *ptr+=5 को एक कथन *ptr+=9 से प्रतिस्थापित नहीं कर सकता है। क्योंकि, यह स्पष्ट नहीं है कि क्या वेरिएबल 'ए' को अन्य पॉइंटर्स के माध्यम से सीधे (या) एक्सेस किया जा सकता है।
उदाहरण के लिए,
restrict int *ptr int a= 0; ptr = &a; ____ ____ ____ *ptr+=4; // Can be replaced with *ptr+=9 ____ ____ *ptr+=5; ____ ____से बदला जा सकता है
यहां, कंपाइलर दो स्टेटमेंट्स को एक स्टेटमेंट, *ptr+=9 से बदल सकता है। क्योंकि, यह सुनिश्चित है कि वेरिएबल को किसी अन्य संसाधन के माध्यम से एक्सेस नहीं किया जा सकता है।
उदाहरण
प्रतिबंधित कीवर्ड के उपयोग के लिए सी प्रोग्राम निम्नलिखित है -
#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