কাঠামোর নির্দেশক একটি সম্পূর্ণ কাঠামোর ঠিকানা ধারণ করে।
প্রধানত, এগুলি জটিল ডেটা স্ট্রাকচার তৈরি করতে ব্যবহৃত হয় যেমন লিঙ্ক করা তালিকা, গাছ, গ্রাফ ইত্যাদি।
তীর অপারেটর ( ->) নামে একটি বিশেষ অপারেটর ব্যবহার করে কাঠামোর সদস্যদের অ্যাক্সেস করা যেতে পারে।
ঘোষণা
নিম্নোক্ত কাঠামোর জন্য নির্দেশকের ঘোষণা −
struct tagname *ptr;
উদাহরণস্বরূপ, struct student *s;
অ্যাক্সেস করা হচ্ছে
আপনি নিম্নলিখিত −
ব্যবহার করে কাঠামোতে পয়েন্টার অ্যাক্সেস করতে পারেনPtr-> membername;
যেমন, s->sno, s->sname, s->marks;
উদাহরণ
−
-এ পয়েন্টার অ্যাক্সেস করার জন্য সি প্রোগ্রামটি নিচে দেওয়া হল#include<stdio.h>
struct classroom{
int students[7];
};
int main(){
struct classroom clr = {2, 3, 5, 7, 11, 13};
int *ptr;
ptr = (int *)&clr;
printf("%d",*(ptr + 4));
return 0;
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
11
ব্যাখ্যা
এখানে, একটি পয়েন্টার ভেরিয়েবল ptr একটি অবজেক্ট clr এর প্রথম মানের 2 এর ঠিকানা ধারণ করে। তারপর, পয়েন্টার ভেরিয়েবলের ঠিকানা 4 দ্বারা বৃদ্ধি করা হয় এবং অবশেষে, মান প্রদর্শিত হয়।
উদাহরণস্বরূপ,
*(ptr + 0) = 2 *(ptr + 1) = 3 *(ptr + 2) = 5 *(ptr + 3) = 7 *(ptr + 4) = 11 *(ptr + 5) = 13
পয়েন্টার টু স্ট্রাকচার সম্পর্কে জানতে আরেকটি সহজ উদাহরণ বিবেচনা করুন −
উদাহরণ
struct student{
int sno;
char sname[30];
float marks;
};
main ( ){
struct student s;
struct student *st;
printf("enter sno, sname, marks :");
scanf ("%d%s%f", & s.sno, s.sname, &s. marks);
st = &s;
printf ("details of the student are\n");
printf ("Number = %d\n", st ->sno);
printf ("name = %s\n", st->sname);
printf ("marks =%f", st->marks);
getch ( );
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
enter sno, sname, marks :1 bhanu 69 details of the student are Number = 1 name = bhanu marks =69.000000