নেস্টেড স্ট্রাকচার এবং স্ট্রাকচারের মধ্যে পয়েন্টার ব্যবহার

স্ট্রাকচার এবং ইউনিয়ন (Structures and Unions) - কম্পিউটার প্রোগ্রামিং ফান্ডামেন্টাল (Computer Programming Fundamentals) - Computer Science

178

নেস্টেড স্ট্রাকচার (Nested Structures)

নেস্টেড স্ট্রাকচার হলো এক বা একাধিক স্ট্রাকচারকে অন্য স্ট্রাকচারের মধ্যে অন্তর্ভুক্ত করা। এটি জটিল ডেটা সংগঠিত করতে এবং সম্পর্কিত ডেটার সাথে কাজ করতে সহায়ক।

উদাহরণ

ধরি, আমরা একটি ছাত্রের তথ্য সংরক্ষণ করতে চাই, যার মধ্যে ছাত্রের নাম এবং তার ঠিকানা রয়েছে। ঠিকানাটি একটি নেস্টেড স্ট্রাকচার হিসাবে ব্যবহৃত হবে।

#include <stdio.h>
#include <string.h>

// ঠিকানা সংরক্ষণের জন্য স্ট্রাকচার
struct Address {
    char street[50];
    char city[50];
    int zip;
};

// ছাত্রের তথ্য সংরক্ষণের জন্য স্ট্রাকচার
struct Student {
    char name[50];
    int age;
    struct Address address; // নেস্টেড স্ট্রাকচার
};

int main() {
    struct Student student;

    // ছাত্রের তথ্য ইনিশিয়ালাইজ করা
    strcpy(student.name, "Alice");
    student.age = 20;
    strcpy(student.address.street, "123 Main St");
    strcpy(student.address.city, "Springfield");
    student.address.zip = 12345;

    // ছাত্রের তথ্য প্রিন্ট করা
    printf("Name: %s\n", student.name);
    printf("Age: %d\n", student.age);
    printf("Address: %s, %s, %d\n", student.address.street, student.address.city, student.address.zip);

    return 0;
}

আউটপুট:

Name: Alice
Age: 20
Address: 123 Main St, Springfield, 12345

স্ট্রাকচারের মধ্যে পয়েন্টার ব্যবহার

স্ট্রাকচারের মধ্যে পয়েন্টার ব্যবহার করা হলে, আপনি সহজেই মেমরি ম্যানেজমেন্ট ও তথ্যের অ্যাক্সেস করতে পারেন। পয়েন্টার ব্যবহার করলে স্ট্রাকচারের আকার কমে যায় এবং ডাইনামিক মেমরি বরাদ্দের মাধ্যমে বৃহৎ ডেটা সংরক্ষণ করা সম্ভব হয়।

উদাহরণ

নিচে একটি স্ট্রাকচারের মধ্যে পয়েন্টার ব্যবহার করে দেখানো হলো:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// ছাত্রের তথ্য সংরক্ষণের জন্য স্ট্রাকচার
struct Student {
    char *name; // পয়েন্টার হিসেবে নাম সংরক্ষণ
    int age;
};

int main() {
    struct Student student;

    // নামের জন্য মেমরি বরাদ্দ করা
    student.name = (char *)malloc(50 * sizeof(char));
    if (student.name == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }

    // ছাত্রের তথ্য ইনিশিয়ালাইজ করা
    strcpy(student.name, "Bob");
    student.age = 22;

    // ছাত্রের তথ্য প্রিন্ট করা
    printf("Name: %s\n", student.name);
    printf("Age: %d\n", student.age);

    // বরাদ্দকৃত মেমরি মুক্ত করা
    free(student.name);

    return 0;
}

আউটপুট:

Name: Bob
Age: 22

উপসংহার

নেস্টেড স্ট্রাকচার এবং স্ট্রাকচারের মধ্যে পয়েন্টার ব্যবহার করার মাধ্যমে জটিল ডেটা সংরক্ষণ এবং পরিচালনা করা সহজ হয়। নেস্টেড স্ট্রাকচার দিয়ে সম্পর্কিত ডেটা সংগঠিত করা যায়, এবং পয়েন্টার ব্যবহারের মাধ্যমে ডাইনামিক মেমরি ব্যবস্থাপনা এবং কার্যকরী ডেটা অ্যাক্সেস নিশ্চিত করা যায়। এই পদ্ধতিগুলো আধুনিক সফটওয়্যার ডেভেলপমেন্টে কার্যকরী ভূমিকা পালন করে।

Promotion

Are you sure to start over?

Loading...