NULL পয়েন্টার এবং Void পয়েন্টারের পার্থক্য হলো NULL পয়েন্টার একটি মান (value) আর Void পয়েন্টার একটি টাইপ (type)।
NULL পয়েন্টার
NULL পয়েন্টার মানে এটি কিছুই নির্দেশ করছে না। যদি কোনো পয়েন্টারের কাছে কোনো ঠিকানা অ্যাসাইন করা না থাকে, তবে তাকে NULL সেট করুন।
প্রতিটি পয়েন্টার টাইপের (যেমন int *, char *) একটি NULL পয়েন্টার মান থাকে।
সিনট্যাক্স নিম্নরূপ −
<data type> *<variable name> = NULL;
উদাহরণস্বরূপ,
int *p = NULL; char *p = '\0';
উদাহরণ প্রোগ্রাম
নিচে NULL পয়েন্টারের জন্য একটি সি প্রোগ্রাম দেওয়া হলো −
#include<stdio.h> int main(){ printf("TutorialPoint C Programming"); int *p = NULL; // ptr is a NULL pointer printf("\n The value of pointer is: %x ", p); return 0; }আউটপুট
উপরোক্ত প্রোগ্রাম এক্সিকিউট করলে নিচের ফলাফল আসে −
TutorialPoint C Programming The value of pointer is: 0
Void পয়েন্টার
Void পয়েন্টার হলো যেটির সাথে কোনো ডেটা টাইপ নেই। এটিকে জেনারেল পারপাস পয়েন্টারও বলা হয়। এটি যেকোনো ডেটা টাইপের ঠিকানা ধারণ করতে পারে।
সিনট্যাক্স নিম্নরূপ −
void *<data type>;
উদাহরণস্বরূপ,
void *p; int a; char c;
p = &a; // p ইন্টিজার পয়েন্টারে পরিণত হয় কারণ ইন্টিজারের ঠিকানা এসাইন করা হয়েছে
p = &c; // p ক্যারেক্টার পয়েন্টারে পরিণত হয় কারণ ক্যারেক্টারের ঠিকানা এসাইন করা হয়েছে
উদাহরণ
নিচে Void পয়েন্টারের জন্য একটি সি প্রোগ্রাম দেওয়া হলো −
#include<stdio.h> int main(){ int a = 10; void *ptr = &a; printf("%d", *(int *)ptr); return 0; }আউটপুট
উপরোক্ত প্রোগ্রাম এক্সিকিউট করলে নিচের ফলাফল আসে −
10