C++ এ Null এবং Nullptr-এর মধ্যে পার্থক্য কী? (বিস্তারিত) – সমস্ত পার্থক্য

 C++ এ Null এবং Nullptr-এর মধ্যে পার্থক্য কী? (বিস্তারিত) – সমস্ত পার্থক্য

Mary Davis

"Nullptr" একটি কীওয়ার্ড হিসাবে বিবেচিত হয় যা শূন্যকে একটি ঠিকানা হিসাবে চিত্রিত করে, যেখানে "Null" হল একটি পূর্ণসংখ্যা হিসাবে শূন্যের মান।

আপনি যদি একজন প্রোগ্রামার হন, তাহলে আপনি হয়তো জানেন যে কোড করার জন্য কম্পিউটারের ভাষা বোঝা কতটা গুরুত্বপূর্ণ। কিন্তু কখনও কখনও, এটি একটু বিভ্রান্তিকর হতে পারে, এবং আপনি দুটি জিনিসের মধ্যে মিশে যেতে পারেন।

C++ ভাষায় Null এবং Nullptr-এর ক্ষেত্রেও একই রকম। আমি আপনাকে বলি যে এই দুটি পদের অর্থ কী এবং তাদের কার্যাবলী আপনাকে তাদের পার্থক্য এবং তাদের ব্যবহার বুঝতে সাহায্য করার জন্য।

কম্পিউটার ভাষা কি?

কম্পিউটার ভাষা প্রোগ্রাম এবং নির্দিষ্ট অ্যাপ্লিকেশন লিখতে ব্যবহৃত কোড বা সিনট্যাক্স হিসাবে সংজ্ঞায়িত করা যেতে পারে।

মূলত, এটি একটি আনুষ্ঠানিক ভাষা যা কম্পিউটারের সাথে যোগাযোগ করতে ব্যবহৃত হয়। একইভাবে, বিভিন্ন দেশে বিভিন্ন ভাষা রয়েছে যা মানুষকে চিন্তাভাবনা শেয়ার করতে সাহায্য করে, তেমনি কম্পিউটারও।

এগুলি কম্পিউটারের প্রোগ্রামিং বুঝতে এবং সেগুলিতে কাজ করার জন্য উদ্ভাবিত হয়েছে। সাধারণভাবে, কম্পিউটার ভাষাকে তিনটি প্রধান বিভাগে শ্রেণীবদ্ধ করা যেতে পারে:

  • সমাবেশের ভাষা

    এটি মাইক্রোপ্রসেসরের জন্য ব্যবহৃত একটি নিম্ন-স্তরের ভাষা হিসাবে বিবেচিত হয় এবং একাধিক অন্যান্য প্রোগ্রামেবল ডিভাইস। এটি একটি দ্বিতীয় প্রজন্মের ভাষা। এটি একটি অপারেটিং সিস্টেম লেখা এবং বিভিন্ন ডেস্কটপ অ্যাপ্লিকেশন লেখার জন্য পরিচিত।

  • মেশিন ভাষা

    এই স্থানীয় ভাষাটি প্রথম প্রজন্মের ভাষা।এটিকে মেশিন কোড বা এমনকি অবজেক্ট কোড বলা হয়, বাইনারি সংখ্যা 0 এবং 1 এর একটি সেট রয়েছে। এই সংখ্যাগুলি একটি কম্পিউটার সিস্টেম দ্বারা বোঝা এবং পড়া হয় যা তাদের দ্রুত ব্যাখ্যা করে।

  • উচ্চ-স্তরের ভাষা

    পুরোনো ভাষায় বহনযোগ্যতার সমস্যার কারণে এটি প্রতিষ্ঠিত হয়েছে। কোডটি স্থানান্তর করতে পারেনি এই অর্থ কোডটি একটি মেশিনে লেখা ছিল। এই ভাষাটি বোঝা সহজ এবং খুব ব্যবহারকারী-বান্ধব।

ভাষার যে অংশটি কম্পিউটার বোঝে সেটিকে "বাইনারী" বলা হয়। অন্যদিকে, বাইনারিতে প্রোগ্রামিং ভাষার অনুবাদ "কম্পাইলিং" নামে পরিচিত।

সংক্ষেপে, প্রোগ্রামিং ভাষাগুলি মানুষকে কম্পিউটারে নির্দেশনা দিতে দেয় যাতে তারা সেগুলি পড়তে এবং কার্যকর করতে পারে। সি ল্যাঙ্গুয়েজ থেকে পাইথন পর্যন্ত প্রতিটি কম্পিউটার ল্যাঙ্গুয়েজের স্বতন্ত্র বৈশিষ্ট্য রয়েছে।

এই ভাষাগুলি কম্পিউটারের জন্য বৃহৎ এবং জটিল ডেটা আরও দক্ষতার সাথে প্রক্রিয়া করা সহজ এবং দ্রুত করে। বর্তমানে বিশ্বে বেশ কয়েকটি প্রোগ্রামিং ভাষা রয়েছে। এর মধ্যে কয়েকটি জাভা, পাইথন, এইচটিএমএল, সি, সি++ এবং এসকিউএল অন্তর্ভুক্ত।

আরো দেখুন: একটি পুরুষ এবং একটি মহিলা বিড়ালের মধ্যে পার্থক্য কী (বিস্তারিত) - সমস্ত পার্থক্য

সি++ ভাষা কী?

C++ ভাষা বিশ্বের অন্যতম জনপ্রিয় প্রোগ্রামিং ভাষা। আপনি আজকের বিশ্বের অপারেটিং সিস্টেম, গ্রাফিক্যাল ইউজার ইন্টারফেস এবং এমবেডেড সিস্টেমে এই ভাষাটি পাবেন।

এটি একটি ক্রস-প্ল্যাটফর্ম ভাষা যা উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। C++ ভাষা প্রতিষ্ঠিত হয়Bjarne Stroustrup দ্বারা, যিনি C ভাষা তৈরির জন্যও দায়ী। এর নাম হিসাবে স্পষ্ট, এই ভাষাটি সি ভাষার একটি এক্সটেনশন।

এটি প্রোগ্রামারদের সিস্টেম সংস্থান এবং মেমরির উপর উচ্চ নিয়ন্ত্রণের অনুমতি দেয়। আপনি মনে করতে পারেন এটি ইতিমধ্যেই আপডেট করা হয়েছে। যাইহোক, ভাষাটি 2011, 2014 এবং 2017 সালে তিনবার আপডেট করা হয়েছে। এটি C++11, C++14 থেকে C++17-এ চলে গেছে।

আজ অবধি, C++ ভাষাটি এর উল্লেখযোগ্য বহনযোগ্যতার কারণে খুব প্রশংসিত হয়েছে, যা নির্মাতাদের বিভিন্ন অপারেটিং সিস্টেম বা প্ল্যাটফর্মে দক্ষতার সাথে চলতে পারে এমন প্রোগ্রামগুলি বিকাশ করতে দেয়।

কেন অনেকেই C++ ব্যবহার করে?

এই ভাষাটি প্রচলিত কারণ এটি একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা যা প্রোগ্রামগুলির একটি পরিষ্কার কাঠামো প্রদান করে এবং কোড পুনরায় ব্যবহার করার অনুমতি দিয়ে উন্নয়ন খরচ কমাতে সাহায্য করে।

এর উচ্চ কার্যক্ষমতার কারণে, এই ভাষাটি গেম, ডেস্কটপ অ্যাপ, ব্রাউজার এবং অপারেটিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। এই ভাষার আরেকটি বৈশিষ্ট্য হল এটি বহনযোগ্য এবং একটি অ্যাপ্লিকেশন তৈরি করতে দেয় যা তারা একাধিক প্ল্যাটফর্মে মানিয়ে নিতে পারে।

যদিও এটি শেখার জন্য সবচেয়ে চ্যালেঞ্জিং ভাষাগুলির মধ্যে একটি হিসাবে পরিচিত, তবে এর সুবিধা রয়েছে৷ এটির মাল্টি-প্যারাডাইম ভাষা এবং এর ফাংশনগুলি আরও উন্নত সিনট্যাক্সের কারণে অন্যদের তুলনায় এটি বোঝা আরও চ্যালেঞ্জিং।

আপনি যদি C++ ভাষা শিখতে সক্ষম হন, তাহলে এটি শিখতে হবেএর পরে অন্যান্য প্রোগ্রামিং ভাষা, যেমন জাভা এবং পাইথন।

সংক্ষেপে, C++ হল একটি সাধারণ-উদ্দেশ্য, এটি মধ্য-স্তরের প্রোগ্রামিং ভাষা যা এটিকে "C স্টাইলে" কোড করা সম্ভব করে। কিছু ক্ষেত্রে, আপনি যেকোনও ফরম্যাটে কোডিং সঞ্চালন করতে পারে, C++ একটি হাইব্রিড ভাষার উদাহরণ তৈরি করে

C এবং C++ ভাষার একটি নাল অক্ষর, একটি নাল পয়েন্টার এবং একটি নাল স্টেটমেন্ট রয়েছে (একটি সেমিকোলন (;) দ্বারা উপস্থাপিত হয়)৷

এ নাল কী সি++?

শূন্যকে একটি অন্তর্নির্মিত ধ্রুবক হিসাবে বিবেচনা করা হয় যা শূন্যের মান ধারণ করে। এটি কম্পিউটার প্রোগ্রামিং-এ একটি ধ্রুবক এবং একটি পয়েন্টার উভয়ই।

একটি ডাটাবেসে থাকাকালীন, শূন্য একটি মান। মান Null নির্দেশ করে যে কোন মান বিদ্যমান নেই। যখন Null একটি মান হিসাবে ব্যবহার করা হয়, এটি একটি মেমরি অবস্থান নয়।

এছাড়াও, একটি নাল অক্ষর ছাড়া, একটি স্ট্রিং যথাযথভাবে শেষ করতে সক্ষম হবে না, যার ফলে অনেক সমস্যার সৃষ্টি হয়। নাল অক্ষরটির বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজ জুড়ে বিভিন্ন ব্যবহার রয়েছে৷

প্রশ্ন হল আপনি কিভাবে C++ এ Null লিখবেন৷ ভাল, একটি নাল ধ্রুবক একটি পূর্ণসংখ্যা টাইপ আছে, তাহলে এটি একটি সাজানোর একটি মান রূপান্তরিত করা যেতে পারে.

আরো দেখুন: "খুব" এবং "এছাড়াও" এর মধ্যে পার্থক্য কী? (বিস্তারিত) – সমস্ত পার্থক্য

উদাহরণস্বরূপ, এই অক্ষর, "নাল", একটি নির্দিষ্ট মার্কার হিসাবে স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ (SQL) এ ব্যবহার করা হয় যাতে বোঝানো হয় যে ডাটাবেসে একটি ডেটা মান বিদ্যমান নেই। একটি রিলেশনাল ডাটাবেস হল যখন একটি নির্দিষ্ট কলামের একটি মান অজানা বা অনুপস্থিত।

এছাড়াও, C# এ,একটি প্রোগ্রামিং ভাষা, Null মানে "কোন অবজেক্ট" নয়। এই ভাষায়, এটি ধ্রুবক শূন্যের সমান নয়।

তবে C++ ভাষায়, Null অক্ষর একটি অনন্য সংরক্ষিত পয়েন্টার মান যা কোনো বৈধ ডেটা অবজেক্টকে নির্দেশ করে না। এছাড়াও, C++ ভাষায়, Null ফাংশন হল পয়েন্টার ভেরিয়েবলের মান নির্ধারণ করার একটি উপায়।

নাল এবং শূন্যের মধ্যে পার্থক্য

যেহেতু নাল শূন্যের মান রাখে, লোকেরা প্রায়শই বিভ্রান্ত হয় যে কীভাবে নাল এবং শূন্যের মধ্যে পার্থক্য করা যায়।

C++ এ Null হল একটি ম্যাক্রো যা একটি নাল পয়েন্টার ধ্রুবককে সংজ্ঞায়িত করে এবং সাধারণত শূন্যের মান। যাইহোক, Null আপনাকে একটি উল্লেখযোগ্য মান দেয় যা উপস্থাপন করে যে ভেরিয়েবল কোন ওজন রাখে না।

যদিও, জিরো নিজেই একটি মান, এবং এভাবেই এটি প্রবাহের ক্রম জুড়ে থাকবে। অন্য কথায়, শূন্য হল সংখ্যার মান, যখন নাল মানে খালি।

আপনি এটিকে একটি একটি রেফ্রিজারেটরের জন্য নিবেদিত নির্দিষ্ট স্থান হিসেবে ভাবতে পারেন ৷ যদি ফ্রিজ থাকে কিন্তু তাতে কিছু না থাকে তাহলে মান জিরো। অন্যদিকে, ফ্রিজের জন্য নিবেদিত স্থানটিতে যদি কোনও ফ্রিজ না থাকে তবে মানটি শূন্য।

C++ এ Nullptr বলতে কী বোঝায়?

"Nullptr" কীওয়ার্ডটি একটি নাল পয়েন্টার মান উপস্থাপন করে। আপনি একটি নাল পয়েন্টার মান ব্যবহার করবেন এটি নির্দেশ করতে যে একটি অবজেক্ট হ্যান্ডেল, অভ্যন্তরীণ পয়েন্টার, বা একটি নেটিভ পয়েন্টার টাইপ একটি বস্তুকে নির্দেশ করে না।

শুধুমাত্র পয়েন্টারগুলি মেমরি অবস্থানগুলি ধরে রাখতে পারে এবং মানগুলি পারে না৷

প্রথমত, আমাদের বুঝতে হবে একটি পয়েন্টার কী৷ এটি একটি ভেরিয়েবল যা একটি মেমরি অবস্থান ধারণ করে৷

একটি নাল পয়েন্টার এমন একটি পয়েন্টার যা ইচ্ছাকৃতভাবে কিছুই করার জন্য সংকেত দেয় না৷ আপনার যদি এমন কোনো ঠিকানা না থাকে যা আপনি একটি পয়েন্টারকে বরাদ্দ করতে পারেন, আপনি Null ব্যবহার করতে পারেন। নাল মান পয়েন্টার আছে এমন অ্যাপ্লিকেশনে মেমরি লিক এবং ক্র্যাশ এড়ায়।

তাছাড়া, Nullptr চেক করতে, আপনি একটি পয়েন্টার মান ব্যবহার করতে পারেন একটি শর্ত হিসাবে একটি পয়েন্টার C++ এ Null কিনা তা পরীক্ষা করতে। যৌক্তিক অভিব্যক্তিতে ব্যবহৃত হলে, নাল পয়েন্টারগুলিকে মিথ্যা হিসাবে মূল্যায়ন করা হয়।

অতএব, কেউ যদি ইফ স্টেটমেন্ট কন্ডিশনে একটি প্রদত্ত পয়েন্টার রাখতে পারে সেটি নাল কিনা তা পরীক্ষা করতে। সংক্ষেপে, Nullptr হল একটি পয়েন্টার-টাইপ কীওয়ার্ড যা শূন্য একটি ঠিকানা হিসাবে উপস্থাপন করে।

একটি সাধারণ প্রশ্ন হল কেন Nullptr প্রয়োজন হয় যখন ইতিমধ্যে একটি নাল অক্ষর থাকে। এর কারণ হল, C++ 11-এ, Nullptr হল একটি নাল পয়েন্টার ধ্রুবক, এবং এটি প্রয়োজনীয় কারণ এটি টাইপ নিরাপত্তা উন্নত করে।

Null এবং Nullptr কি একই?

না। তারা না. প্রথমে তাদের পার্থক্যগুলি জানতে নীচের এই টেবিলটি দেখুন৷

Nullptr Null
জিরোর প্রতিনিধিত্বকারী কীওয়ার্ড শূন্যের মান
শূন্যকে একটি ঠিকানা হিসাবে উপস্থাপন করে একটি হিসাবে মানকে প্রতিনিধিত্ব করে পূর্ণসংখ্যা
নতুন এবং প্রস্তাবিত ফাংশন পুরানো এবংডিপ্রেকেটেড ফাংশন
ট্রু পয়েন্টার টাইপ পূর্ণসংখ্যার জন্য একটি উপনাম হিসাবে প্রয়োগ করা হয়েছে

ধ্রুবক শূন্য

কীওয়ার্ডগুলি নোট করুন যাতে আপনি বিভ্রান্ত না হন৷

নালকে একটি "মনিফেস্ট ধ্রুবক" হিসাবে বিবেচনা করা হয় যা আসলে একটি পূর্ণসংখ্যা এবং একটি অন্তর্নিহিত রূপান্তরের কারণে একটি পয়েন্টারকে বরাদ্দ করা যেতে পারে৷

যেহেতু একটি Nullptr একটি কীওয়ার্ড যা স্ব-সংজ্ঞায়িত টাইপের একটি মান উপস্থাপন করে এবং এটি একটি পয়েন্টারে রূপান্তর করতে পারে কিন্তু পূর্ণসংখ্যাতে নয়। Nullptr সাধারণত একটি Null পয়েন্টার এবং সর্বদা একটি হবে। আপনি যদি এটি একটি পূর্ণসংখ্যা নির্ধারণ করার চেষ্টা করেন তবে এটি ত্রুটির কারণ হবে।

আপনি যদি এখনও এটি না পান তবে এই ভিডিওটি দেখুন।

এই ভিডিওটি পুঙ্খানুপুঙ্খভাবে ব্যাখ্যা করে যে আপনি কী এবং কখন স্ট্রীমারের সাথে Null বা nullptr-কোড ব্যবহার করবেন৷

আপনি কি Null এর পরিবর্তে Nullptr ব্যবহার করতে পারেন?

হ্যাঁ যদিও সেগুলি এক নয়, আপনার কাছে Null এর পরিবর্তে Nullptr ব্যবহার করার একটি উপায় রয়েছে৷

এছাড়া, Nullptr হল C++ এ একটি নতুন কীওয়ার্ড যা প্রতিস্থাপন হতে পারে খালি. Nullptr একটি নিরাপদ টাইপ পয়েন্টার মান দেয় যা একটি খালি পয়েন্টার প্রতিনিধিত্ব করে।

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

এছাড়া, রেফারেন্স ব্যবহার করার আগে আপনি একটি পয়েন্টার বা হ্যান্ডেল রেফারেন্স Null কিনা তা পরীক্ষা করতে Nullptr কীওয়ার্ড ব্যবহার করতে পারেন।

আপনি একটি Nullptr ডিরেফারেন্স করতে পারেন?

আপনি একটি nullptr সম্মান করতে পারেন। আপনি যদি তা করেন, তাহলে পয়েন্টার যে ঠিকানায় নির্দেশ করছে সেখানে আপনি মানটি অ্যাক্সেস করতে পারবেন।

কম্পিউটার ভাষায়, ডিরেফারেন্সিং একটি পয়েন্টার দ্বারা নির্দেশিত মেমরি অবস্থানে থাকা ডেটা অ্যাক্সেস বা ম্যানিপুলেট করতে ব্যবহৃত হয়।

তবে, আপনি C ভাষায় এটি করতে পারবেন না একটি নাল পয়েন্টার একটি অর্থপূর্ণ বস্তুর দিকে নির্দেশ করে না, ডিরেফারেন্সের প্রচেষ্টা, যা সংরক্ষিত ডেটা অ্যাক্সেস করছে। একটি নাল পয়েন্টার সাধারণত একটি রান-টাইম ত্রুটি বা তাত্ক্ষণিক প্রোগ্রাম ক্র্যাশের দিকে পরিচালিত করে।

কম্পিউটার প্রোগ্রামিং-এ, একটি ডিরেফারেন্স অপারেটর হল যা একটি পয়েন্টার ভেরিয়েবলে কাজ করে। এটি ভেরিয়েবলের মান দ্বারা নির্দেশিত মেমরিতে অবস্থানের মান প্রদান করে। C++ প্রোগ্রামিং ল্যাঙ্গুয়েজে, অপারেটেড ডিফারেন্সকে একটি তারকাচিহ্ন (*) দিয়ে প্রতীকী করা হয়।

চূড়ান্ত চিন্তা

কেউ একটি শূন্যকে একটি ম্যাক্রো হিসাবে সংজ্ঞায়িত করতে পারে যা একটি শূন্য পয়েন্টারে পরিণত হয়, যার মানে সেই ভেরিয়েবলের জন্য কোন ঠিকানা নেই। নাল হল C ভাষার একটি পুরানো ম্যাক্রো যা C++ এ চলে গেছে।

এদিকে, Nullptr হল একটি নতুন সংস্করণ যা C++11-এ চালু করা হয়েছে এবং এটি Null-এর প্রতিস্থাপন হিসাবে বোঝানো হয়েছে।

অতএব, আজকে সুপারিশ করা হচ্ছে যে আপনি এমন জায়গায় Nullptr ব্যবহার শুরু করুন যেখানে আপনি অতীতে বা এমনকি এই লেখার পরিবর্তে Null ব্যবহার করতেন।

    এই নিবন্ধটির সংক্ষিপ্ত সংস্করণ দেখতে এখানে ক্লিক করুন৷

    Mary Davis

    মেরি ডেভিস একজন লেখক, বিষয়বস্তু স্রষ্টা এবং বিভিন্ন বিষয়ে তুলনা বিশ্লেষণে বিশেষজ্ঞ গবেষক। সাংবাদিকতায় একটি ডিগ্রি এবং ক্ষেত্রের পাঁচ বছরের বেশি অভিজ্ঞতার সাথে, মেরির তার পাঠকদের কাছে নিরপেক্ষ এবং সরল তথ্য সরবরাহ করার জন্য একটি আবেগ রয়েছে। লেখালেখির প্রতি তার ভালবাসা শুরু হয়েছিল যখন তিনি অল্পবয়সী ছিলেন এবং লেখালেখিতে তার সফল কর্মজীবনের পিছনে একটি চালিকা শক্তি হিসেবে কাজ করেছেন। মেরির গবেষণা এবং ফলাফলগুলিকে সহজে বোঝা এবং আকর্ষক বিন্যাসে উপস্থাপন করার ক্ষমতা তাকে সারা বিশ্বের পাঠকদের কাছে প্রিয় করেছে। যখন তিনি লিখছেন না, মেরি ভ্রমণ, পড়া এবং পরিবার এবং বন্ধুদের সাথে সময় কাটাতে উপভোগ করেন।