একটি ভেরিয়েবল একটি লজিকাল কনস্ট্রাক্ট যা একটি অ্যালগোরিদমের অভিপ্রায় যায়, অন্যদিকে মেমরির অবস্থান একটি শারীরিক গঠন যা একটি কম্পিউটারের ক্রিয়াকলাপ বর্ণনা করে। সাধারণভাবে বলতে গেলে, একটি প্রোগ্রাম কার্যকর করার জন্য একটি ভেরিয়েবলের লজিকাল ধারণা এবং কম্পিউটারের সঞ্চয়স্থানের মধ্যে ম্যাপিং রয়েছে (সংকলক উত্পন্ন)।
(এমনকি অ্যাসেম্বলি ভাষার ক্ষেত্রেও আমাদের অ্যালগরিদম এবং অভিপ্রায় এবং (শারীরিক) মেমরির অবস্থানগুলিতে (যৌক্তিক) ভেরিয়েবলের ধারণা রয়েছে যদিও তারা সমাবেশে আরও জটিল হয়)
একটি ভেরিয়েবল একটি উচ্চ (এর) স্তর ধারণা। একটি ভেরিয়েবল হয় অজানা প্রতিনিধিত্ব করে (যেমন গণিতে, বা প্রোগ্রামিং অ্যাসাইনমেন্ট হিসাবে) বা কোনও স্থানধারক যা একটি মান (যেমন প্রোগ্রামিং: প্যারামিটারে) হিসাবে প্রতিস্থাপিত হতে পারে।
একটি স্মৃতি অবস্থান নিম্ন (এর) স্তর ধারণা is কোনও মেমরির অবস্থানটি কোনও ভেরিয়েবলের মান সঞ্চয় করতে কখনও কখনও কোনও মান সঞ্চয় করতে ব্যবহৃত হতে পারে। তবে কিছু ভেরিয়েবলের মান সঞ্চয় করার জন্য একটি সিপিইউ রেজিস্ট্রার হ'ল অন্য উপায়। সিপিইউ রেজিস্টারগুলিও কম (এর) স্তর সঞ্চয় স্থান রয়েছে তবে তাদের ঠিকানা নেই, কেবল নাম নেই বলে এগুলি মেমরির অবস্থান নয়।
কিছু দিক থেকে, একটি পরিবর্তনশীল হ'ল প্রোগ্রামটির অভিপ্রায় প্রকাশের জন্য বিমূর্তকরণের একটি প্রক্রিয়া, অন্যদিকে মেমরির অবস্থান প্রক্রিয়াজাতকরণের পরিবেশের একটি শারীরিক সত্তা যা স্টোরেজ এবং পুনরুদ্ধার সরবরাহ করে।
প্রশ্ন 003: এটি কি সত্য যে কোনও পয়েন্টার মেমরি অবস্থান 0x23452 এর ভিতরে সঞ্চয় করা হয়? কেন?
আমরা নিশ্চিতভাবে বলতে পারি না। ঠিক আছে কারণ সেখানে কোনও মান রয়েছে যা ঠিকানা হিসাবে কাজ করবে, তার মানে এই নয় যে এটি ঠিকানা, এটি পরিবর্তে পূর্ণসংখ্যা (দশমিক) হতে পারে 144466। আমরা মানগুলি কীভাবে সংখ্যায় প্রদর্শিত হয় তার ভিত্তিতে মূল্যবোধের ব্যাখ্যা নিয়ে অনুমান করতে পারি না।
প্রশ্ন 004: এটি কি সত্য যে কোনও পয়েন্টার মেমরি অবস্থান 0x23452 এর ভিতরে সঞ্চয় করা হয়? কেন?
এটি আসলেই একটি বিজোড় প্রশ্ন। তারা বাক্সগুলির উপর ভিত্তি করে কিছু অনুমানের প্রত্যাশা করে, তবে, লক্ষ্য করা যাক যে প্রতিটি বাক্সের জন্য ঠিকানাগুলি 1 টি বৃদ্ধি পেয়েছে। যে কোনও আধুনিক কম্পিউটারে, এর অর্থ হ'ল প্রতিটি বাক্স একটি বাইট ধরে রাখতে পারে - বাইট অ্যাড্রেসিয়েটেবিলিটি এখন কয়েক দশক ধরে। তবে বাইটটি কেবল 8-বিট এবং 0 থেকে 255 (স্বাক্ষরযুক্ত স্বীকৃত মানগুলির জন্য) হতে পারে; তবুও তারা এই ঠিকানাগুলির মধ্যে একটিতে সঞ্চিত একটি বৃহত্তর মান দেখায়, তাই খুব সন্দেহজনক। (এটি যদি কোনও শব্দ সম্বোধনকারী মেশিন হত তবে এটি কাজ করতে পারে তবে এটি এমনটি বলে না, এবং কিছু শিক্ষামূলক মেশিন যদিও আজ রয়েছে খুব কম) machines
আমি আপনাকে যে চারটি ফ্ল্যাশকার্ড দেখিয়েছি তার উপর ভিত্তি করে আমি পয়েন্টারগুলিকে কিছুটা ভিন্ন উপায়ে সংজ্ঞায়িত করব:
পয়েন্টার হ'ল একটি মেমরি অবস্থান যার মান অন্য মেমরির অবস্থানের মেমরি ঠিকানা।
এই চিন্তাভাবনাটি সঠিক হওয়ার মতো পরিস্থিতিতে রয়েছে, আপনি এখানে রূপকগুলি মিশ্রিত করছেন। একটি ভেরিয়েবলের ধারণাটি অ্যালগরিদম এবং তার উদ্দেশ্য সম্পর্কে যায় - সমস্ত ভেরিয়েবলের মেমরির অবস্থান রয়েছে তা ধরে নেওয়ার প্রয়োজন নেই। কিছু ভেরিয়েবল (বিশেষত অ্যারে) এর মেমোরি অবস্থান থাকে কারণ মেমরি অবস্থানগুলি সম্বোধন সমর্থন করে (যেখানে সিপিইউ রেজিস্টারগুলিকে কেবল সূচিযুক্ত না করেই নামকরণ করা যেতে পারে)।
কার্যকর করার জন্য, ভেরিয়েবল এবং স্টেটমেন্ট এবং প্রসেসরের মেমরি অবস্থান এবং প্রসেসরের নির্দেশ ক্রমগুলির মধ্যে একটি যৌক্তিক ম্যাপিং রয়েছে। একটি পরিবর্তনশীল যার মান কখনই পরিবর্তিত হয় না (যেমন একটি ধ্রুবক) এমনকি অগত্যা একটি মেমরি অবস্থানেরও প্রয়োজন হয় না, যেহেতু মানটি ইচ্ছায় পুনরুত্পাদন করা যায় (যেমন সংকলক দ্বারা উত্পন্ন কোড সিকোয়েন্সগুলির জন্য প্রয়োজনীয়)।
a
,0x23453
।nil
তাদের ভিতরে স্টাফ মান হয়। এটি আপনার কাছে সুস্পষ্ট বলে মনে হতে পারে তবে those ক্ষেত্রগুলি কীভাবে সংজ্ঞায়িত করা হয়েছে তা না দেখেই আমি এই প্রশ্নগুলির সিদ্ধান্তমূলক উত্তর দিতে স্বাচ্ছন্দ্যবোধ করব না।a
দ্বিতীয় চিত্রটিতে একটি চরিত্র, একটি স্ট্রিং (যদি তারা কোনও আলাদা হয়) বা কোনও ভেরিয়েবলের নাম কিনা তা জানার সত্যিই উপায় নেই । এটি যদি একটি স্ট্রিং হয়, তবেnil
এটিও একটি স্ট্রিং? বা একটি "নাল" মান?