স্ট্রাকচারের পয়েন্টার পুরো স্ট্রাকচারের অ্যাড্রেস ধারণ করে।
এটি লিংকড লিস্ট, ট্রি, গ্রাফ সadrat জটিল ডেটা স্ট্রাকচার তৈরি করতে ব্যবহৃত হয়।
স্ট্রাকচারের মেম্বারগুলিকে অ্যারো অপারেটর (->) নামে একটি বিশেষ অপারেটর ব্যবহার করে অ্যাক্সেস করা যায়।
ঘোষণা
C প্রোগ্রামিং-এ স্ট্রাকচারের পয়েন্টারগুলোর জন্য ঘোষণাটি নিচে দেওয়া হলো −
struct tagname *ptr;
উদাহরণস্বরূপ: struct student *s;
অ্যাক্সেস করা
স্ট্রাকচারের পয়েন্টারগুলিকে কিভাবে অ্যাক্সেস করতে হয় সেটি নিচে ব্যাখ্যা করা হলো।
Ptr->membername;
উদাহরণস্বরূপ − s->sno, s->sname, s->marks;
উদাহরণ
নিচে C প্রোগ্রামিং-এ স্ট্রাকচারের ডাইনামিক মেমরি অ্যালোকেশন ব্যাখ্যা করা হলো −
#include#include struct person { int age; float weight; char name[30]; }; int main(){ struct person *ptr; int i, n; printf("ব্যক্তির সংখ্যা লিখুন: "); scanf("%d", &n); // n সংখ্যক struct person-এর জন্য মেমরি অ্যালোকেট করা ptr = (struct person*) malloc(n * sizeof(struct person)); for(i = 0; i < n; ++i){ printf("নাম ও বয়স লিখুন: "); // 1ম struct person-এর মেম্বার অ্যাক্সেস করতে, // ptr->name এবং ptr->age ব্যবহার করা হয় // 2য় struct person-এর মেম্বার অ্যাক্সেস করতে, // (ptr+1)->name এবং (ptr+1)->age ব্যবহার করা হয় scanf("%s %d", (ptr+i)->name, &(ptr+i)->age); } printf("তথ্য প্রদর্শন:\n"); for(i = 0; i < n; ++i) printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age); return 0; }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
ব্যক্তির সংখ্যা লিখুন: 1 নাম ও বয়স লিখুন: bhanu 24 তথ্য প্রদর্শন: Name: bhanu Age: 24
উদাহরণ ২
পয়েন্টার ও স্ট্রাকচারের উপর আরেকটি উদাহরণ বিবেচনা করুন, যেখানে পয়েন্টার ও স্ট্রাকচার ডেমনস্ট্রেট করার C প্রোগ্রাম দেওয়া হলো।
#include// আউটার ও ইনার স্ট্রাকচার ঘোষণা // struct Manager{ char Name[15]; int Age; char Gender; float Level; char Role[50]; char temp; }m[20]; void main(){ // ফর লুপ ও পয়েন্টার ভেরিয়েবলের জন্য ভেরিয়েবল ঘোষণা // int i; struct Manager *p; // পয়েন্টার ডিফাইন করা // p = &m; // ইউজার ইনপুট পড়া // for (i=1; i<3; i++){ // 2 জন ম্যানেজারের ডেটা গ্রহণের জন্য ফাংশন ঘোষণা // printf("Enter the Name of manager %d : ", i); gets(p->Name); printf("Enter the Age of manager %d : ", i); scanf("%d", &p->Age); scanf("%c", &p->temp); // বাফার ক্লিয়ার করা // printf("Enter the Gender of manager %d : ", i); scanf("%c", &p->Gender); // scanf("%c", &p->temp); // বাফার ক্লিয়ার করা // printf("Enter the level of manager %d : ", i); scanf("%f", &p->Level); scanf("%c", &p->temp); // বাফার ক্লিয়ার করা // printf("Enter the role of manager %d : ", i); gets(p->Role); p++; } // আউটপুট প্রিন্ট করার জন্য একবার আর পয়েন্টার ডিফাইন করা // p = &m; // আউটপুট প্রিন্ট করা // for (i=1; i<3; i++){ printf("The Name of Manager %d is : %s\n", i, p->Name); printf("The Age of Manager %d is : %d\n", i, p->Age); printf("The Gender of Manager %d is : %c\n", i, p->Gender); printf("The Level of Manager %d is : %f\n", i, p->Level); printf("The Role of Manager %d is : %s\n", i, p->Role); p++; } }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফল পাওয়া যায় −
Enter the Name of manager 1 : Hari Enter the Age of manager 1 : 55 Enter the Gender of manager 1 : M Enter the level of manager 1 : 2 Enter the role of manager 1 : Senior Enter the Name of manager 2 : Bob Enter the Age of manager 2 : 60 Enter the Gender of manager 2 : M Enter the level of manager 2 : 1 Enter the role of manager 2 : CEO The Name of Manager 1 is : Hari The Age of Manager 1 is : 55 The Gender of Manager 1 is : M The Level of Manager 1 is : 2.000000 The Role of Manager 1 is : Senior The Name of Manager 2 is : Bob The Age of Manager 2 is : 60 The Gender of Manager 2 is : M The Level of Manager 2 is : 1.000000 The Role of Manager 2 is : CEO