অ্যারে এবং পয়েন্টারের মধ্যে পার্থক্য
কন্টেন্ট
অ্যারে এবং পয়েন্টারের মধ্যে নিবিড় সম্পর্ক রয়েছে। পয়েন্টার অ্যারে উপাদানগুলিতে অ্যাক্সেস করতে ব্যবহৃত হতে পারে, পয়েন্টার গাণিতিক ব্যবহার করে পুরো অ্যারে অ্যাক্সেস করে অ্যাক্সেসকে আরও দ্রুত করে তোলে। পয়েন্টার এবং অ্যারের মধ্যে একটি মৌলিক পার্থক্য যা হ'ল একটি অ্যারে হ'ল অনুরূপ ডাটা টাইপের ভেরিয়েবলের সংগ্রহ যেখানে পয়েন্টারটি একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের ঠিকানা সঞ্চয় করে। তুলনা চার্টে নীচে আলোচনা করা হয়েছে যা একটি অ্যারে এবং একটি পয়েন্টারের মধ্যে কিছু অন্যান্য পার্থক্য রয়েছে।
- তুলনা রেখাচিত্র
- সংজ্ঞা
- মূল পার্থক্য
- উপসংহার
তুলনা রেখাচিত্র
তুলনা করার জন্য বেস | বিন্যাস | ইশারা |
---|---|---|
ঘোষণা | // সি ++ এ টাইপ করুন var_name; // জাভাতে। টাইপ করুন var-name; var_name = নতুন প্রকার; | // সি ++ এ টাইপ করুন * বর্ণ_নাম; |
ওয়ার্কিং | একজাতীয় ডেটাটাইপের ভেরিয়েবলের মান সঞ্চয় করে। | পয়েন্টার ভেরিয়েবল ডেটাটাইপ হিসাবে একই ডেটাটাইপের অন্য ভেরিয়েবলের ঠিকানা সঞ্চয় করুন। |
প্রজন্ম | পয়েন্টারগুলির একটি অ্যারে তৈরি করা যায়। | একটি অ্যারের একটি পয়েন্টার উত্পন্ন করা যেতে পারে। |
জাভা সাপোর্ট | অ্যারের ধারণা সমর্থন করুন। | পয়েন্টার সমর্থন করে না। |
সংগ্রহস্থল | একটি সাধারণ অ্যারে ভেরিয়েবলের মান সংরক্ষণ করে এবং পয়েন্টার অ্যারে ভেরিয়েবলের ঠিকানা সঞ্চয় করে। | পয়েন্টারগুলি ভেরিয়েবলের ঠিকানা সঞ্চয় করার জন্য বিশেষভাবে ডিজাইন করা হয়। |
ধারণক্ষমতা | একটি অ্যারে অ্যারে ভেরিয়েবলের আকারে উল্লিখিত উপাদানের সংখ্যা সংরক্ষণ করতে পারে। | পয়েন্টার ভেরিয়েবল একবারে কেবলমাত্র একটি ভেরিয়েবলের ঠিকানা সঞ্চয় করতে পারে। |
অ্যারের সংজ্ঞা
একটি অ্যারে হ'ল একই ডেটাটাইপের উপাদানগুলির সংগ্রহ এবং এই সমস্ত উপাদানগুলিকে একটি সাধারণ নাম দ্বারা উল্লেখ করা হয়, যা অ্যারে ভেরিয়েবলের নাম। যে উপাদানটি সঞ্চিত আছে সেই অ্যারেটির নির্দিষ্ট সূচকটি অ্যাক্সেসের মাধ্যমে একটি নির্দিষ্ট অ্যারে উপাদান অ্যাক্সেস করা যেতে পারে r অ্যারেগুলি এক-মাত্রিক অ্যারে, দ্বিমাত্রিক অ্যারে বা বহুমাত্রিক অ্যারে হতে পারে। পয়েন্টারগুলির একটি অ্যারেও উত্পন্ন করা যায় অর্থাৎ পয়েন্টার ভেরিয়েবল হিসাবে সমস্ত ভেরিয়েবল সমেত একটি অ্যারে তৈরি করা যায়। ‘সি ++’ এ অ্যারেগুলি স্থিতিশীলভাবে বরাদ্দ করা হয়েছে যেখানে, ‘জাভা’ -তে অ্যারেগুলি গতিশীলভাবে বরাদ্দ করা হয়েছে।
// সি ++ তে var_name টাইপ করুন; // জাভাতে। টাইপ করুন var-name; var_name = নতুন প্রকার;
এখানে 'টাইপ' অ্যারে ভেরিয়েবলের ডেটা টাইপকে বোঝায়, 'ভ্যার_নেম' অ্যারে ভেরিয়েবলের দেওয়া নাম বোঝায়, 'সাইজ' অ্যারে ভেরিয়েবলের ক্ষমতা বোঝায় অর্থাৎ 'অ্যারে' ভেরিয়েবলের মধ্যে কত প্রকার উপাদান সংরক্ষণ করা যেতে পারে । অ্যারে অ্যাক্সেস করার দুটি পদ্ধতি রয়েছে, প্রথম ‘পয়েন্টার পাটিগণিত’ এবং দ্বিতীয় ‘অ্যারে সূচক’, যার মধ্যে ‘পয়েন্টার পাটিগণিত’ দ্রুত।
// পয়েন্টার গাণিতিক ব্যবহার করে অ্যাক্সেস অকার্যকর প্রদর্শন_প্রিয় (ইন্ট * এস) - যখন (* গুলি) out কোট (<< "মান" << * গুলি); * গুলি ++,; }}
‘পয়েন্টার পাটিগণিত’ ব্যবহার করা ‘অ্যারে ইনডেক্সিং’ এর তুলনায় দ্রুত কাজ করবে, অর্থাত্ এর সূচকটি ব্যবহার করে অ্যারে ভেরিয়েবল অ্যাক্সেস করবে। যদি আপনাকে কোনও ফাংশনে পয়েন্টারগুলির একটি অ্যারে পাস করার প্রয়োজন হয়, তবে আপনি কোনও সাধারণ অ্যারে পাস করার জন্য ব্যবহার করেন একই পদ্ধতিটি ব্যবহার করেই করা যেতে পারে, কোনও সূচি ছাড়াই সরাসরি অ্যারেটির সাথে ফাংশনটি কল করুন।
আসুন উদাহরণ সহ এটি বুঝতে পারি
// পয়েন্টার অ্যারে ঘোষণা। int * পি;
এখানে এটি দেখায় যে ‘পি’ পূর্ণসংখ্যার ধরণের অ্যারে, এটি পূর্ণসংখ্যার প্রকারের 10 ভেরিয়েবলের ঠিকানাটি ধারণ করবে। আসুন উপরের পয়েন্টার অ্যারেটিকে একটি ফাংশন ডিসপ্লেতে () প্রদর্শিত হবে।
প্রদর্শন (পি); // ফাংশন প্রদর্শন কল করুন। অকার্যকর প্রদর্শন (int * d) {// পয়েন্টার অ্যারে গ্রহণের কাজ। (int i = 0; i <10; i ++) out cout << ("সূচী" <
এই ফাংশনটি ভেরিয়েবলগুলিতে উপস্থিত মানগুলি প্রদর্শন করবে, যার ঠিকানাগুলি এই পয়েন্টার অ্যারেতে ধারাবাহিকভাবে সংরক্ষণ করা হবে।
পয়েন্টার সংজ্ঞা
পয়েন্টারটি একটি ভেরিয়েবল যা অন্য ভেরিয়েবলের মেমরি ঠিকানা রাখে। উভয়ের ডেটাটাইপ, পয়েন্টার ভেরিয়েবল এবং ভেরিয়েবল যার ঠিকানা পয়েন্টার ভেরিয়েবলের জন্য বরাদ্দ করা হচ্ছে, অবশ্যই একই হবে। পয়েন্টার ভেরিয়েবল অনুসরণ হিসাবে ঘোষিত হয়।
// সি ++ টাইপ * নামে ঘোষণা;
এখানে, ‘টাইপ’ একটি ডেটাটাইপ, ‘নাম’ পয়েন্টার ভেরিয়েবলের নাম। কী ধরণের ভেরিয়েবলের ঠিকানা পয়েন্টার ভেরিয়েবলে সংরক্ষণ করা যায় তা ‘টাইপ’ নির্ধারণ করে। উদাহরণস্বরূপ, পূর্ণসংখ্যা পয়েন্টার পূর্ণসংখ্য ভেরিয়েবলের ঠিকানা সঞ্চয় করবে। দুটি পয়েন্টার অপারেটর রয়েছে ‘*’ এবং ‘&’। অপারেটর ‘*’ ঠিকানায় অবস্থিত মানটি ফিরিয়ে দেয়, যা ‘*’ সাইন অনুসারে চলকটিতে সঞ্চিত থাকে। ‘&’ অপারেটর ভেরিয়েবলের ঠিকানা প্রদান করে তারপরে ‘&’ চিহ্ন।
// উদাহরণস্বরূপ int b = 10 int a = & b; // এখানে b এর ঠিকানাটি ভ্যারিয়েবল এ সংরক্ষণ করা হয়েছে। // এর বি এর ঠিকানা 2000 হয়, সুতরাং এখন a = 2000। int c = * a; // এখানে, পূর্ণসংখ্যার পয়েন্টার ভেরিয়েবল * a মানটি প্রদান করবে যা একটি .ie মধ্যে সঞ্চিত ঠিকানায় অবস্থিত। গ = 10।
কেবলমাত্র দুটি গাণিতিক অপারেটর রয়েছে আপনি পয়েন্টারগুলিতে ব্যবহার করতে পারবেন অর্থাত্ সংযোজন এবং বিয়োগফল। আপনি যদি একটি পূর্ণসংখ্য পয়েন্টার ভেরিয়েবলের উপর বর্ধন প্রয়োগ করেন, এটি ডেটাটাইপের আকার দ্বারা বৃদ্ধি করা হবে, যেমন 2 বাইট দ্বারা, এটি একটি পূর্ণসংখ্যার পয়েন্টার হিসাবে, বর্ধিতকরণে এটি পরবর্তী সংখ্যার ভেরিয়েবলটি নির্দেশ করতে হবে। হ্রাস ক্ষেত্রে একই।
// পি একটি পূর্ণসংখ্যার পয়েন্টার যা সংকেত মান 2000. পি ++; // এখন পি = 2002। p--; // এখন পি আবার 2000 রয়েছে দুটি বাইট দ্বারা হ্রাস হিসাবে।
- একটি অ্যারে অনুরূপ ডেটা ধরণের ভেরিয়েবল সঞ্চয় করে এবং ভেরিয়েবলের ডেটা ধরণের অবশ্যই অ্যারের প্রকারের সাথে মেলে। অন্যদিকে, পয়েন্টার ভেরিয়েবল একটি ধরণের পয়েন্টার ভেরিয়েবল টাইপের অনুরূপ কোনও ভেরিয়েবলের ঠিকানা সঞ্চয় করে।
- আমরা পয়েন্টারগুলির একটি অ্যারে তৈরি করতে পারি অর্থাৎ অ্যারে যার ভেরিয়েবলগুলি পয়েন্টার ভেরিয়েবল। অন্যদিকে, আমরা একটি পয়েন্টার তৈরি করতে পারি যা অ্যারেতে নির্দেশ করে।
- জাভা অ্যারে সমর্থন করে, তবে এটি পয়েন্টারগুলিকে সমর্থন করে না।
- একটি অ্যারের আকার যেখানে ভেরিয়েবল সংরক্ষণ করতে পারে তার সংখ্যা নির্ধারণ করে; পয়েন্টার ভেরিয়েবল কেবল ভেরিয়েবলের ঠিকানা সঞ্চয় করতে পারে
বিঃদ্রঃ:
জাভা পয়েন্টার সমর্থন বা কঠোরভাবে এড়ায় না avoid
উপসংহার:
যখন আমাদের অনুরূপ ডেটা টাইপের ডেটা উপাদানগুলিতে কাজ করার দরকার হয় তখন ভেরিয়েবলগুলিতে আলাদাভাবে কাজ করার পরিবর্তে আমরা সেই জাতীয় ডাটা প্রকারের ভেরিয়েবলগুলির একটি অ্যারে তৈরি করতে পারি এবং তারপরে এটি পরিচালনা করতে পারি। কিছু প্রোগ্রামের জন্য পয়েন্টারগুলি প্রয়োজনীয়, এটি প্রচণ্ড শক্তি দেয়, তবে দুর্ভাগ্যক্রমে, যদি কোনও পয়েন্টারে কোনও ভুল মান থাকে তবে এটি সন্ধান করা সবচেয়ে কঠিন বাগ।