কম্পিউটার

Dangling, Void, Null এবং Wild Pointers C++ এ


ঝুলন্ত পয়েন্টার

ড্যাংলিং পয়েন্টার হল একটি পয়েন্টার যা একটি মেমরি অবস্থানের দিকে নির্দেশ করে যা মুক্ত (বা মুছে ফেলা হয়েছে)। বিভিন্ন উপায় আছে যেখানে পয়েন্টার ড্যাংলিং পয়েন্টার হিসাবে কাজ করে

ফাংশন কল

স্থানীয় ভেরিয়েবলের দিকে নির্দেশকারী পয়েন্টারটি ঝুলে যায় যখন স্থানীয় ভেরিয়েবল স্থির থাকে না।

int *show(void) { int n =76; /* ... */ ফেরত &n;}

আউটপুট

এই প্রোগ্রামের আউটপুট হবে আবর্জনা ঠিকানা।

মেমরির ডি-অ্যালোকেশন

int main() { float *p =(float *)malloc(sizeof(float)); // গতিশীল মেমরি বরাদ্দ। বিনামূল্যে(p); // free() p কল করার পর একটি ঝুলন্ত পয়েন্টার হয়ে যায় p =NULL; //এখন p আর একটি ঝুলন্ত পয়েন্টার নেই৷

ভেরিয়েবল সুযোগের বাইরে চলে যায়

int main() { int *p //some code// { int c; p=&c; } //some code// //p এখানে ড্যাংলিং পয়েন্টার। }

অকার্যকর পয়েন্টার

অকার্যকর পয়েন্টার এমন একটি পয়েন্টার যা কোনো ডেটা প্রকারের সাথে যুক্ত নয়। এটি স্টোরেজের কিছু ডেটা অবস্থান নির্দেশ করে মানে ভেরিয়েবলের ঠিকানায় নির্দেশ করে। এটিকে সাধারণ উদ্দেশ্য পয়েন্টারও বলা হয়।

এর কিছু সীমাবদ্ধতা আছে

  • কংক্রিট আকারের কারণে পয়েন্টার গাণিতিক অকার্যকর পয়েন্টার সম্ভব নয়।
  • এটি ডিরেফারেন্স হিসাবে ব্যবহার করা যাবে না।

উদাহরণ

#include#include namespace ব্যবহার করে std;int main() { int a =7; float b =7.6; void *p; p =&a; cout<<*((int*) p)< 

আউটপুট

77.600000

অ্যালগরিদম

পূর্ণসংখ্যা মান সহ একটি ভেরিয়েবল a এবং ফ্লোট মান সহ ভেরিয়েবল b শুরু করুন। একটি অকার্যকর পয়েন্টার ঘোষণা করুন পি. (int*)p =টাইপ ঢালাই অকার্যকর। p =&b মানে void পয়েন্টার p এখন float। (float*)p =টাইপ ঢালাই অকার্যকর। মান প্রিন্ট করুন। শেষ।

নাল পয়েন্টার

নাল পয়েন্টার এমন একটি পয়েন্টার যা কিছুই নির্দেশ করে না।

নাল পয়েন্টারের কিছু ব্যবহার হল

  • একটি পয়েন্টার ভেরিয়েবল শুরু করার জন্য যখন সেই পয়েন্টার ভেরিয়েবলটিকে এখনও কোনো বৈধ মেমরি ঠিকানা বরাদ্দ করা হয়নি।

  • আমরা কোনো বৈধ মেমরি ঠিকানা পাস করতে না চাইলে কোনো ফাংশন আর্গুমেন্টে একটি নাল পয়েন্টার পাস করতে।

  • যেকোনো পয়েন্টার ভেরিয়েবল অ্যাক্সেস করার আগে নাল পয়েন্টার চেক করতে। যাতে, আমরা পয়েন্টার সম্পর্কিত কোডে ত্রুটি পরিচালনা করতে পারি যেমন ডিরেফারেন্স পয়েন্টার ভেরিয়েবল শুধুমাত্র যদি এটি NULL না হয়।

উদাহরণ

#include  namespace ব্যবহার করে std;int main() { int *p=NULL; //পয়েন্টারটিকে নাল হিসাবে শুরু করুন। cout<<"পয়েন্টারের মান হল "; cout< 

আউটপুট

পয়েন্টারের মান হল 0।

ওয়াইল্ড পয়েন্টার

ওয়াইল্ড পয়েন্টার হল পয়েন্টার যা কিছু নির্বিচারে মেমরি অবস্থান নির্দেশ করে। (এমনকি NULLও নয়)

int main() { int *ptr; //ওয়াইল্ড পয়েন্টার *ptr =5;}

  1. C++ এ প্রতিটি নোড II-এ পরবর্তী ডান পয়েন্টার পপুলেট করা হচ্ছে

  2. C++ এ প্রতিটি নোডে পরবর্তী ডান পয়েন্টার পপুলেট করা হচ্ছে

  3. C/C++ পয়েন্টার বনাম জাভা রেফারেন্স

  4. একটি স্মার্ট পয়েন্টার কি এবং কখন আমি এটি C++ এ ব্যবহার করব?