কম্পিউটার টিউটোরিয়াল

সি ভাষায় volatile এবং restrict টাইপ কোয়ালিফায়ার উদাহরণসহ ব্যাখ্যা


টাইপ কোয়ালিফায়ার সি প্রোগ্রামিং ভাষায় বিদ্যমান ডেটা টাইপে বিশেষ অ্যাট্রিবিউট যোগ করে।

Volatile

volatile টাইপ কোয়ালিফায়ার কম্পাইলারকে বলে যে ভেরিয়েবলটি শেয়ার্ড। অর্থাৎ, অন্য প্রোগ্রাম বা এন্টিটি দ্বারা রেফারেন্স এবং পরিবর্তন করা যেতে পারে।

উদাহরণ: volatile int x;

Restrict

শুধু পয়েন্টারের সাথে ব্যবহার করা হয়। নির্দেশ করে যে পয়েন্টারটি ডিরেফারেন্সড ডেটা অ্যাক্সেস করার একমাত্র প্রাথমিক পথ। কম্পাইলারের অপ্টিমাইজেশনে সাহায্য করে।

উদাহরণ: volatile

int *ptr;
int a = 0;
ptr = &a;
*ptr += 4; // *ptr += 9 দিয়ে রিপ্লেস করা যাবে না
*ptr += 5;

এখানে কম্পাইলার দুটি স্টেটমেন্টকে একে (*ptr+=9) রিপ্লেস করতে পারবে না, কারণ 'a' ভেরিয়েবলটি সরাসরি অথবা অন্য পয়েন্টার দিয়ে অ্যাক্সেস করা যেতে পারে।

উদাহরণ: restrict

restrict int *ptr;
int a = 0;
ptr = &a;
*ptr += 4; // *ptr += 9 দিয়ে রিপ্লেস করা যাবে
*ptr += 5;

এখানে কম্পাইলার নিশ্চিত যে ভেরিয়েবলটি অন্য কোনো রিসোর্স থেকে অ্যাক্সেস করা যাবে না, তাই অপ্টিমাইজ করতে পারে।

প্রোগ্রাম: restrict কীওয়ার্ড ব্যবহার

#include<stdio.h>
void keyword(int* a, int* b, int* restrict c) {
    *a += *c;
    *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

  1. সি ভাষায় মনোলিথিক এবং মডুলার প্রোগ্রামিং ব্যাখ্যা

  2. সি ভাষায় লুপ কন্ট্রোল স্টেটমেন্ট (for, while, do-while) ফ্লোचार্ট ও প্রোগ্রামসহ ব্যাখ্যা

  3. ইমেজ অ্যারে কী? C++-এ উদাহরণসহ ব্যাখ্যা

  4. C#-তে ভ্যালু টাইপ এবং রেফারেন্স টাইপের পার্থক্য ব্যাখ্যা