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

সি ভেরিয়েবলের মেমরি রিপ্রেজেন্টেশন প্রদর্শনের পদ্ধতি

সি প্রোগ্রামিং-এ ভেরিয়েবলগুলো মেমরিতে কীভাবে সংরক্ষিত থাকে তা বুঝতে তাদের মেমরি রিপ্রেজেন্টেশন দেখতে পারি। এখানে আমরা ইন্টিজার, ফ্লোট এবং পয়েন্টারের মেমরি কন্টেন্ট দেখাব।

পদ্ধতি

  1. ভেরিয়েবলের ঠিকানা এবং আকার নিন
  2. ঠিকানাটিকে ক্যারেক্টার পয়েন্টারে কাস্ট করুন বাইট লেভেল এক্সেস পাওয়ার জন্য
  3. ভেরিয়েবলের আকার পর্যন্ত লুপ চালিয়ে প্রতিটি বাইটের মান প্রিন্ট করুন

উদাহরণ

#include <stdio.h>

typedef unsigned char *byte_pointer;

void disp_bytes(byte_pointer ptr, int len) {
    int i;
    for (i = 0; i < len; i++)
        printf(" %.2x", ptr[i]);
    printf("\n");
}

void disp_int(int x) {
    disp_bytes((byte_pointer) &x, sizeof(int));
}

void disp_float(float x) {
    disp_bytes((byte_pointer) &x, sizeof(float));
}

void disp_pointer(void *x) {
    disp_bytes((byte_pointer) &x, sizeof(void *));
}

int main() {
    int i = 5;
    float f = 2.0;
    int *p = &i;
    disp_int(i);
    disp_float(f);
    disp_pointer(p);
    disp_int(i);
    return 0;
}

আউটপুট

05 00 00 00 00 00 00 40 3c fe 22 00 00 00 00 00 05 00 00 00

ব্যাখ্যা

  • ইন্টিজার ৫: লিটল-এন্ডিয়ান ফরম্যাটে 05 00 00 00 (৪ বাইট)
  • ফ্লোট ২.০: IEEE 754 ফরম্যাটে 00 00 00 40 (৪ বাইট)
  • পয়েন্টার: সিস্টেমের আর্কিটেকচার অনুযায়ী ৮ বাইট (৬৪-বিট সিস্টেমে)
  • পুনরায় disp_int(i) কল করলে একই আউটপুট আসে

দ্রষ্টব্য: আউটপুট সিস্টেমের এন্ডিয়ানেস এবং আর্কিটেকচার (৩২-বিট বা ৬৪-বিট) এর উপর নির্ভর করে পরিবর্তিত হতে পারে।

  1. আপনার কতটুকু RAM আসলে দরকার?

  2. শক্তিশালী পাসওয়ার্ড তৈরি করার কৌশল যেটি আপনি ভুলবেন না

  3. Matplotlib-এ প্লট লেজেন্ডে শুধু টেক্সট লেবেল দেখানোর পদ্ধতি

  4. এক্সেলে ভেরিয়েবল রিলেশনশিপ ভিজ্যুয়ালাইজ করুন: ধাপে ধাপে গাইড