পয়েন্টার টু স্ট্রাকচার পুরো কাঠামোর যোগ ধারণ করে।
এটি জটিল ডেটা স্ট্রাকচার তৈরি করতে ব্যবহৃত হয় যেমন লিঙ্ক করা তালিকা, গাছ, গ্রাফ ইত্যাদি।
তীর অপারেটর ( ->) নামে একটি বিশেষ অপারেটর ব্যবহার করে কাঠামোর সদস্যদের অ্যাক্সেস করা যেতে পারে।
ঘোষণা
সি প্রোগ্রামিং -
-এ স্ট্রাকচারের পয়েন্টারগুলির জন্য নিম্নোক্ত ঘোষণাstruct ট্যাগনেম *ptr;
যেমন:struct student *s;
অ্যাক্সেস করা হচ্ছে
এটি নীচে ব্যাখ্যা করা হয়েছে কিভাবে স্ট্রাকচারে পয়েন্টার অ্যাক্সেস করতে হয়।
Ptr-> সদস্যের নাম;
যেমন − s->sno, s->sname, s->চিহ্ন;
উদাহরণ
নিম্নলিখিত একটি C প্রোগ্রাম যা C প্রোগ্রামিং-এ গঠনের গতিশীল মেমরি বরাদ্দ ব্যাখ্যা করে -
#include#include নির্মাণ ব্যক্তি { int বয়স; ভাসমান ওজন; char name[30];};int main(){struct person *ptr; int i, n; printf("ব্যক্তির সংখ্যা লিখুন:"); scanf("%d", &n); // struct person ptr =(struct person*) malloc(n * sizeof(struct person)) এর n সংখ্যার জন্য মেমরি বরাদ্দ করা; for(i =0; i নাম এবং ptr->বয়স ব্যবহার করা হয় // ২য় কাঠামোর ব্যক্তির সদস্যদের অ্যাক্সেস করতে, // (ptr+1)->নাম এবং (ptr+1)->বয়স ব্যবহৃত হয় scanf("%s %d", (ptr+i)->নাম, &(ptr+i)->বয়স); } printf("প্রদর্শন তথ্য:\n"); জন্য(i =0; i নাম, (ptr+i)->বয়স); রিটার্ন 0;
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
ব্যক্তির সংখ্যা লিখুন:1 যথাক্রমে নাম এবং বয়স লিখুন:ভানু 24 তথ্য প্রদর্শন করা হচ্ছে:নাম:ভানু বয়স:24
উদাহরণ 2
পয়েন্টার এবং স্ট্রাকচারের আরেকটি উদাহরণ বিবেচনা করুন, যেখানে পয়েন্টার এবং স্ট্রাকচার প্রদর্শনের জন্য একটি সি প্রোগ্রাম দেওয়া হয়েছে।
#include//ডিক্লেয়ারিং আউটার এবং ইন্টার স্ট্রাকচার//স্ট্রাকচার ম্যানেজার{চারের নাম[15]; int বয়স; char লিঙ্গ; ভাসমান স্তর; char ভূমিকা[50]; char temp;}m[20];void main(){ //ফর লুপ এবং পয়েন্টার ভেরিয়েবলের জন্য ভেরিয়েবল ঘোষণা করা// int i; struct ম্যানেজার *p; //ডিফাইনিং পয়েন্টার// p=&m; //রিডিং ইউজার I/p// এর জন্য (i=1;i<3;i++){//2 ম্যানেজারের ডেটা গ্রহণ করার ফাংশন ঘোষণা করা// printf("পরিচালকের নাম লিখুন %d :",i); gets(p->নাম); printf("পরিচালকের বয়স লিখুন %d :",i); scanf("%d",&p->বয়স); scanf("%c",&p->temp);//ক্লিয়ারিং বাফার// printf("পরিচালকের লিঙ্গ লিখুন %d :",i); scanf("%c",&p->লিঙ্গ); //scanf("%c",&p->temp);//ক্লিয়ারিং বাফার// printf("পরিচালকের স্তর লিখুন %d :",i); scanf("%f",&p->স্তর); scanf("%c",&p->temp);//ক্লিয়ারিং বাফার// printf("পরিচালকের ভূমিকা লিখুন %d :",i); gets(p->ভুমিকা); p++; } //আউটপুট প্রিন্ট করতে আরও একবার পয়েন্টার সংজ্ঞায়িত করুন// p=&m; (i=1;i<3;i++){ printf("পরিচালক %d-এর নাম হল :%s\n", i,p->নাম); printf("পরিচালক %d এর বয়স হল :%d\n", i,p->বয়স); printf("ম্যানেজার %d এর লিঙ্গ হল :%c\n", i,p->লিঙ্গ); printf("পরিচালক %d এর স্তর হল :%f\n", i,p->স্তর); printf("পরিচালক %d এর ভূমিকা হল :%s\n", i,p->ভুমিকা); p++; }}
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
ম্যানেজারের নাম লিখুন 1 :হরি ম্যানেজারের বয়স লিখুন 1 :55 ম্যানেজারের লিঙ্গ লিখুন 1 :ম্যানেজারের স্তর লিখুন 1 :2 ম্যানেজারের ভূমিকা লিখুন 1 :সিনিয়র ম্যানেজারের নাম লিখুন 2 :বব ম্যানেজারের বয়স লিখুন 2 :60 ম্যানেজারের লিঙ্গ লিখুন 2 :ম্যানেজারের লেভেল লিখুন 2 :1 ম্যানেজারের ভূমিকা লিখুন 2 :CEO ম্যানেজার 1 এর নাম হল :হরি ম্যানেজার 1 এর বয়স হল :55 ম্যানেজার 1 এর লিঙ্গ হল :ম্যানেজার 1 এর লেভেল হল :2.000000ম্যানেজার 1 এর ভূমিকা হল :সিনিয়র ম্যানেজার 2 এর নাম হল :বব ম্যানেজার 2 এর বয়স হল :60 ম্যানেজার 2 এর লিঙ্গ হল :M The Level of Manager 2 হল :1.000000 Manager 2 এর ভূমিকা হল :CEO>