টাইপ কোয়ালিফায়াররা সি প্রোগ্রামিং ল্যাঙ্গুয়েজে বিদ্যমান ডেটা টাইপগুলিতে বিশেষ বৈশিষ্ট্য যোগ করে।
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। কারণ, এটা নিশ্চিত যে অন্য কোনো রিসোর্সের মাধ্যমে ভেরিয়েবল অ্যাক্সেস করা যাবে না।
উদাহরণ
সীমাবদ্ধ কীওয়ার্ড −
ব্যবহারের জন্য সি প্রোগ্রামটি নিচে দেওয়া হল#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