ডাবল পয়েন্টার বা পয়েন্টার থেকে পয়েন্টার হল একটি পরিবর্তনশীল যা অন্য পয়েন্টারের ঠিকানা ধরে রাখে।
একটি পয়েন্টার -
-এ নির্দেশকের জন্য ঘোষণা নিম্নরূপdatatype ** pointer_name;
উদাহরণস্বরূপ, int **p; p হল পয়েন্টার থেকে একটি পয়েন্টার
শুরু করা − '&' প্রাথমিককরণের জন্য ব্যবহৃত হয়।
উদাহরণস্বরূপ,
int a = 10; int *p; int **q; p = &a;
অ্যাক্সেস করা হচ্ছে − ইনডাইরেকশন অপারেটর (*) অ্যাক্সেস করার জন্য ব্যবহার করা হয়।
উদাহরণ
পয়েন্টার থেকে পয়েন্টার -
এর জন্য সি প্রোগ্রামটি নিচে দেওয়া হল#include<stdio.h>
main ( ){
int A = 10;
int *p;
int **q;
p = &A;
q = &p;
printf("A =%d",A);
printf("A value of pointer = %d", *p);
printf("A value of double pointer = %d", **q);
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
A=10 A value of pointer = 10 A value of double pointer = 10
অকার্যকর পয়েন্টার
এটি এমন এক ধরনের পয়েন্টার যা যেকোনো ডেটাটাইপ ভেরিয়েবলের ঠিকানা ধরে রাখতে পারে (বা) যেকোনো ডেটাটাইপ ভেরিয়েবলকে নির্দেশ করতে পারে।
নিম্নে অকার্যকর পয়েন্টার -
-এর ঘোষণা দেওয়া হলvoid *pointername;
উদাহরণস্বরূপ, void *vp;
অ্যাক্সেস করা হচ্ছে − টাইপ কাস্ট অপারেটর হল একটি ভেরিয়েবলের মান তার পয়েন্টারের মাধ্যমে অ্যাক্সেস করার জন্য৷
সিনট্যাক্স নিম্নরূপ -
* ( (type cast) void pointer)
উদাহরণস্বরূপ,
int i=10;
void *vp;
vp = &i;
printf ("%d", * ((int*) vp));
type cast উদাহরণ
শূন্য পয়েন্টার -
-এর জন্য C প্রোগ্রামটি নিচে দেওয়া হল#include<stdio.h>
main ( ){
int i =10;
float f = 5.34;
void *vp;
clrscr ( );
vp = &i;
printf ("i = %d", * ((int*)vp));
vp = &f;
printf ( "f = %f", * ((float*) vp));
getch ( );
} আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
i = 10 f = 5.34