কম্পিউটার

সি ভাষায় পয়েন্টার টু স্ট্রাকচারের গতিশীল মেমরি বরাদ্দ ব্যাখ্যা কর


পয়েন্টার টু স্ট্রাকচার পুরো কাঠামোর যোগ ধারণ করে।

এটি জটিল ডেটা স্ট্রাকচার তৈরি করতে ব্যবহৃত হয় যেমন লিঙ্ক করা তালিকা, গাছ, গ্রাফ ইত্যাদি।

তীর অপারেটর ( ->) নামে একটি বিশেষ অপারেটর ব্যবহার করে কাঠামোর সদস্যদের অ্যাক্সেস করা যেতে পারে।

ঘোষণা

সি প্রোগ্রামিং -

-এ স্ট্রাকচারের পয়েন্টারগুলির জন্য নিম্নোক্ত ঘোষণা
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 
  1. সি ভাষা ব্যবহার করে সন্নিবেশ বাছাই ব্যাখ্যা করুন।

  2. C ভাষায় ক্যারেক্টার অপারেশন ব্যাখ্যা কর

  3. সি ভাষায় ইউনিয়নকে পয়েন্টার ব্যাখ্যা কর

  4. সি ল্যাঙ্গুয়েজে পয়েন্টার এক্সেসিংয়ের ধারণাটি ব্যাখ্যা কর