পয়েন্টারগুলির জন্য একটি সুন্দর ব্যাখ্যা কি? [বন্ধ]


72

আপনার নিজের পড়াশুনায় (আপনার নিজের বা কোনও শ্রেণীর জন্য) আপনি যখন "অবশেষে, সত্যই পয়েন্টারগুলি বুঝতে পেরেছিলেন তখন কি আপনার" আহ হা "মুহুর্তটি ছিল? আপনি কি বিশেষভাবে কার্যকর বলে মনে করেন প্রারম্ভিক প্রোগ্রামারগুলির জন্য আপনি এমন ব্যাখ্যা ব্যবহার করেন?

উদাহরণস্বরূপ, যখন সূচনাপ্রাপ্তরা সি-তে প্রথম মুখোমুখি হয় তখন এটি সংকলন না হওয়া পর্যন্ত তারা কেবলমাত্র &এস এবং *এস যোগ করতে পারে (যেমন আমি নিজেও একবার করেছিলাম)। হতে পারে এটি কোনও ছবি বা সত্যিই উত্সাহিত উদাহরণ, যা আপনাকে বা আপনার শিক্ষার্থীর জন্য পয়েন্টারগুলিকে "ক্লিক" করেছিল। এটি কী ছিল, এবং আপনি কাজ করেছেন বলে মনে হচ্ছে না তার আগে আপনি কী চেষ্টা করেছিলেন? কোনও বিষয় পূর্বশর্ত ছিল (যেমন স্ট্রাইক, বা অ্যারে)?

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


আপডেট: আমি এখনও পর্যন্ত উত্তরগুলি পছন্দ করি; দয়া করে তাদের আসতে দিন এখানে অনেক দুর্দান্ত দৃষ্টিকোণ রয়েছে তবে আমি ধারণা করি অভ্যন্তরীণ ধারণাটি অভ্যস্ত করার পরে অনেকগুলি নিজের পক্ষে ভাল ব্যাখ্যা / স্লোগান । যখন এটি আপনার উপর প্রকাশিত হয়েছিল তখন আমি বিশদ প্রসঙ্গ এবং পরিস্থিতি সন্ধান করছি।

উদাহরণ স্বরূপ:

আমি সি তে কিছুটা পয়েন্টারকে সিনথেটিকভাবে বুঝতে পেরেছিলাম আমি আমার দু'জন বন্ধুকে অন্য বন্ধুর কাছে পয়েন্টার ব্যাখ্যা করতে শুনেছি, যারা জিজ্ঞাসা করেছিল যে কেন structএকটি পয়েন্টার দিয়ে পাস করা হয়েছে। প্রথম বন্ধুটি এটি কীভাবে রেফারেন্স এবং সংশোধন করা দরকার তা নিয়ে কথা বলেছিল, তবে এটি অন্য বন্ধুর কাছ থেকে আমার সংক্ষিপ্ত মন্তব্য ছিল যেখানে এটি আমাকে আঘাত করেছিল: "এটি আরও কার্যকর efficient" 16 বাইটের পরিবর্তে 4 বাইট উত্তীর্ণ হ'ল আমার চূড়ান্ত ধারণাটি পরিবর্তন হবে।


16
'শটগান' পদ্ধতি: এটি যতক্ষণ কাজ করে ততক্ষণ সেখানে ফেলে দিন।
মাইকেল কে

15
@ মিশেল: হ্যাঁ, তার সাথে শুভ কামনা রইল।
রবার্ট হার্ভে

8
এই প্রশ্নটি এসও-তে প্রতিটি সেমিস্টার শুরুর কিছুক্ষণ পরে আসে। সর্বশেষতম অবতারটি এখানে: stackoverflow.com/questions/4118647/…
টিম পোস্ট

10
পয়েন্টারগুলির জন্য একটি সুন্দর ব্যাখ্যা কি? ব্রায়ান কার্নিগান এবং ডেনিস রিচি ঘৃণ্য সফ্টওয়্যার ইঞ্জিনিয়ারদের।
অ্যাডাম ক্রসল্যান্ড

3
এটি ডিবাগারে একক স্টেপিং মেশিন কোডটি ব্যয় করার পরে এটি আমার জন্য "ক্লিক করেছে"। হ্যাঁ, আমি কম্পিউটার আর্কিটেকচারের বুনিয়াদিগুলির সাথে পরিচিত ছিলাম - আমি কমোডোর on৪ এ অ্যাসেম্বলি শিখেছি এবং x86 এএসএম এর পরে বেশ সোজা ছিল। সুতরাং আমি ইতিমধ্যে একটি "ঠিকানা" ধারণাটি জানতাম, আমি কীভাবে সি এর সিনট্যাক্টিকাল কনস্ট্রাক্টসে ম্যাপ করেছিলাম তা আমি বুঝতে পারি নি।
zvrba

উত্তর:


25

স্মৃতি হিসাবে গ্রিড ডায়াগ্রাম

সাধারণত আমি যা করি তা হ'ল গ্রিড হিসাবে মেমরির প্রতিনিধিত্ব করে, যাতে আমি ঠিকানাগুলি তৈরি করতে পারি, বিভিন্ন মেমরির স্থান হাইলাইট করতে পারি এবং কোষের মানগুলিতে লিখতে পারি (বা আরও, তাদের বাইনারি উপস্থাপনা) এবং স্মৃতিতে পয়েন্টারগুলিকে তারা মানগুলির সাথে সংযুক্ত করে লক্ষ্য কর. (এবং তারপরেও উল্লেখ করুন যে এটি একটি সরলীকরণ)।

সাধারণত আমার বেশিরভাগ শিক্ষার্থীদের জন্য এটি "ওহহহ" মুহুর্ত।

প্রতীক জাগলিং

তারপরে যখন তাদের কীভাবে & এবং * কীভাবে ব্যবহার করতে হয় তা ভুলে যাওয়া বন্ধ করে দেওয়া হয়, এটি খুব সহজ: তারা গণিত বা পদার্থবিজ্ঞানের গণনার সাথে একইভাবে উপস্থাপন করুন। আপনি যদি এক ঘন্টার মধ্যে কিমিটিতে দূরত্ব ভাগ করে নেন তবে আপনি কিমি / ঘন্টা গতিবেগ পাবেন। যা আছে তা বাইরে বেরিয়ে আসা দরকার। সহজ।

মুদ্রণ থেকে রেসকিউ

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

বিস্তৃত হও

সাধারণ প্রকারের জন্য পয়েন্টারগুলি কভার করুন এবং নিশ্চিত করুন যে তারা ঠিকানা এবং কোনও ডেটা টাইপের আকারের, তারপরে স্ট্রাক্টস, তারপরে অ্যারে এবং একাধিক স্তরের পার্থক্য বুঝতে পারে।

তারপরে পয়েন্টার গাণিতিক শুরু করুন।


সংযোজন: পুনরাবৃত্তি

আমি সাধারণত একটি ভিজ্যুয়াল উপস্থাপনা ব্যবহার করে পুনরাবৃত্তির ব্যাখ্যা করি। তাদের একটি প্রাক-তৈরি ফাংশন ব্যবহার করে বর্ণমালাটি মুদ্রণ করুন যা একটি একক চর লিখেছিল এবং তারপরে কেবল দুটি লাইন পরিবর্তন করে বিপরীত ক্রমে এটি মুদ্রণ করতে বলুন।

সাধারণত একটি "কি ...?" মুহূর্ত এবং আপনি যখন নিজের মুদ্রণ সংখ্যার মানগুলি মুদ্রণ করতে এবং পদক্ষেপগুলিতে প্রবেশের জন্য কেবলমাত্র একটি প্যারামিটার যুক্ত করেন, তখন এটি স্বস্তির দীর্ঘশ্বাস হয়ে যায়।


বিকল্প: প্লে-দোহ মডেল এবং জল কাপ s

আমার প্রকৃতপক্ষে একটি বিশ্ববিদ্যালয়ে কিছু সহকর্মী ছিল যারা প্লে-দোহ পেস্ট ব্যবহার করে শিক্ষার্থীদের পয়েন্টার এবং মেমরির অ্যাক্সেসগুলি বোঝানোর একটি ভিডিও দেখিয়েছিল। এটি অবিশ্বাস্যরূপে চালাক এবং ভালভাবে সম্পন্ন হয়েছিল, যদিও আমি প্রোগ্রামিংটি বুঝতে আগ্রহী খুব অল্প বয়স্ক শিক্ষার্থী ব্যতীত নিজেই সেই কৌশলটি নিজেই ব্যবহার করি নি (তবে সাধারণত যারা খুব শীঘ্রই পয়েন্টার ব্যবহার করে আমি কোনও ভাষার দিকে তাদের নেতৃত্ব দেব না)। মূলত প্লে-দো-এর ক্ষুদ্র বলগুলি ব্যবহার করে যা আপনি মেমরির স্পেসগুলিকে উপস্থাপন করে প্লে-দোহের বড় বড় বলগুলিতে সংযুক্ত করতে পারেন এবং আপনি উভয়কে সংযুক্ত করতে (কোনও লিঙ্কযুক্ত ডেটা কাঠামোর মতো) একত্রিত করতে পারেন বা একত্রে মিলিত করতে পারেন (যেমন একটি সংলগ্ন হিসাবে) মেমরি স্পেস)। নির্দেশিত মেমরি স্পেসগুলির জন্য বিভিন্ন রঙ ব্যবহার করা এবং পয়েন্টারগুলি পাশাপাশি সহায়তা করে। তবে আমি এখনও মনে করি মেমরি-এর-এ-গ্রিড জিনিসটি আরও ভাল কাজ করে, যেহেতু আপনি পরিষ্কারভাবে দেখিয়ে দিতে পারেন যে পয়েন্টিংটি "মানচিত্র / গ্রিড" এর মতোই "সম্বোধনের" বিষয়। যদিও প্লে-দো মোড এখনও তাদের এই ভাবনায় বিভ্রান্ত করে যে জিনিসগুলি সত্যই একে অপরের স্মৃতিতে "স্পর্শ" করে।

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


বাহ, অনুগ্রহের জন্য ধন্যবাদ। উত্তরটি প্রশংসা পেয়েছে lad
হাইলেম

এটি আঁকুন: | কিছু ভাল শিক্ষার মত লাগে!
11'11

80

আমার চেয়ে অনেক বেশি জ্ঞানী কেউ একবার বলেছিলেন:

নুন উ জিনকাং ষষ্ঠ দেশপ্রেমিক হুইংকে জিজ্ঞাসা করেছিলেন, "আমি বহু বছর ধরে মহাপরিনির্বাণ সূত্র অধ্যয়ন করেছি, তবুও এমন অনেক অঞ্চল রয়েছে যা আমি যথেষ্ট বুঝতে পারি না। দয়া করে আমাকে আলোকিত করুন।"

দেশপ্রেমিক প্রতিক্রিয়া জানিয়েছিলেন, "আমি নিরক্ষর। দয়া করে আমাকে চরিত্রগুলি পড়ুন এবং সম্ভবত আমি এর অর্থ ব্যাখ্যা করতে সক্ষম হব।"

নান বললেন, "আপনি চরিত্রগুলিও চিনতে পারবেন না। তাহলে আপনি কীভাবে অর্থটি বুঝতে সক্ষম?"

"সত্যের শব্দের সাথে কোন যোগসূত্র নেই Truth সত্যকে আকাশের উজ্জ্বল চাঁদের সাথে তুলনা করা যেতে পারে Word এই ক্ষেত্রে শব্দগুলিকে একটি আঙুলের সাথে তুলনা করা যায় finger আঙুলটি চাঁদের অবস্থানকে নির্দেশ করতে পারে However তবে, আঙুলটি নয় চাঁদ। চাঁদ দেখার জন্য, আঙুলের ওপার থেকে তাকাতে হবে, তাই না? "


13
চাঁদকে অবৈধ করার জন্য +1। কোয়ানদের জন্য +1, যদি আমি পারতাম।
টিম পোস্ট

14
এক আঙুল উজ্জীবিত করার শব্দটি কী?
অ্যাডাম ক্রসল্যান্ড

3
@ অ্যাডাম যা আপনি মাউস বা ট্র্যাকপ্যাড ব্যবহার করছেন তা নির্ভর করে।
ড্যানিয়েল জোসেফ

7
@ ফ্র্যাঙ্ক এটি একটি দুর্দান্ত উক্তি ছিল। তবুও আমি মনে করি এটি ধারণাটি উপলব্ধি করতে সাহায্য করবে না। বিশেষভাবে পয়েন্টার নতুন কারও কাছে to
গুলশান

11
এটি একটি সুন্দর গল্প ... তবে আমার সন্দেহ হয় যে লোকেরা এটির কারণে ভোটার করছে, এটি পয়েন্টারগুলিকে ভালভাবে ব্যাখ্যা করার পরিবর্তে।
কিরেলেসা

46

আমি দেখতে পেয়েছি যে চিত্রগুলি খুব সহায়ক ছিল। উদাহরণ:

পয়েন্টার ডায়াগ্রাম


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


4
হয় "পয়েন্টার" এর মধ্যে মান 4 হতে হবে বা অ্যারে সূচকগুলি (বা মেমরি ঠিকানাগুলি) 0 থেকে শুরু হওয়া উচিত Otherwise নইলে, একটি পয়েন্টারটি কীভাবে 3 পয়েন্টের মান 3 পয়েন্ট ধরে রাখে?
এমএকে

++ ঠিক এটিই আমি এটি ব্যাখ্যা করতে যাচ্ছি। আমি ফোর্টরানে শুরু করেছি (আরও ভাল বা খারাপের জন্য!)। ফোর্টরানে, তখন ফিরে, আমরা স্ট্রাক্টের অ্যারের পরিবর্তে সমান্তরাল অ্যারে ব্যবহার করেছি ( নতুন কোনও জিনিস নয় )। যদি একটি অ্যারে অ্যারেতে "অন্য সারি" এর একটি সূচক থাকে, আমরা এটিকে একটি "পয়েন্টার" বলি এবং এটি উত্তেজনাপূর্ণ ছিল। আমরা লিঙ্কযুক্ত তালিকাগুলি, গাছ তৈরি করেছি, আপনি এটির নাম দিন।
মাইক ডুনলাভে

2
পয়েন্টারগুলি কোথায় সঞ্চিত তা নির্দেশ করে ছবি ব্যবহার করে এবং পয়েন্টারগুলি কোথায় নির্দেশ করে তা নির্দেশ করে best
গ্যাবলিন

32

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

আমি সংজ্ঞাটি বুঝতে পেরেছি:

পয়েন্টার হ'ল একটি ভেরিয়েবল যা একটি ভেরিয়েবলের ঠিকানা রাখে

তবে আমি এখনও ধারণার বড় অংশ বুঝতে পারি নি। ফিরে তাকানো, আমি মনে করি এটি তিনটি বিষয়কে কেন্দ্র করে:

  1. ঠিক কি হল একটি মেমরি অবস্থান নয়? (এমন সময় আমি কম্পিউটার সংস্থার ক্লাস নিইনি)

  2. বিশ্রী সিনট্যাক্স (সুতরাং হুম ... কেন এটি "ইনট * আইপি" এর মতো সংজ্ঞায়িত হয় তবে পরবর্তীকালে আমি ভেরিয়েবলটিকে "আইপি" হিসাবে উল্লেখ করি?)

  3. ভেরিয়েবলের পরিবর্তে ভেরিয়েবলের ঠিকানা সংরক্ষণ করা ঠিক কীভাবে উপকারী?

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

তবে আমার "আহা" মুহুর্তটি কে ওআরআর একটি সরল পয়েন্টার সংজ্ঞায়নের বিশ্রী বাক্য গঠন ব্যাখ্যা করেছিল। আমি পুরো বইয়ের নোটগুলি নিয়েছি (যাতে আমি আমার বুঝতে আরও বোঝার জন্য নিজের কথায় বইটির তৈরি পয়েন্টগুলি পুনরায় লিখেছি), এবং এটিই এর সাথে সম্পর্কিত:

পয়েন্টার হ'ল একটি ভেরিয়েবল যা ভেরিয়েবলের ঠিকানা রাখে। একটি পয়েন্টার উভয়ই সংজ্ঞায়িত করা হয় এবং '*' অপারেটরের সাথে মেমরির স্থানে সঞ্চিত মান উপস্থাপন করে; অভিব্যক্তিটি স্মৃতিচারণমূলক।

Ex.: 
   int a;      /* Variable 'a' is an integer */

   int *ip;   /* Variable ip is a pointer and dereferencing it gives an integer.
                 In other words, the expression *ip is an int, so ip is a pointer
                 to an int */

আমি সবসময় অনুভব করেছি যে আমার মাথায় এত প্রাথমিক কিছু অন্তর্ভুক্ত না হওয়া পর্যন্ত আমি পয়েন্টারগুলির আরও উন্নত ধারণাগুলি পুরোপুরি বুঝতে পারি না। এটি অ্যাসাইনমেন্টের পরে অবিচ্ছিন্নভাবে আমাকে বিরক্ত করেছিল (যা আমি খুব ভালভাবে করতে পারি নি, উপায় দ্বারা;)) "(আইপি") "(আইপি") সংজ্ঞায়নের পরে কেন "* আইপি" উপস্থিত নেই? পয়েন্টারগুলিকে জড়িত আরও উন্নত ধারণার জন্য এটির দক্ষতা প্রয়োজনীয়, যেমন ফাংশন পয়েন্টার এবং আরও জটিল সংজ্ঞা যেমন:

char (*(x())[])()

সব মিলিয়ে, আমি মনে করি পয়েন্টারগুলির ধারণার প্রয়োজন:

  1. কম্পিউটারে মেমরি কীভাবে বিভক্ত হয় তার একটি প্রাথমিক বোধ (এবং মেমরিটি কী)।

  2. পয়েন্টারগুলি কতটা শক্তিশালী হতে পারে তার জ্ঞান (আসল বিশ্বের ব্যবহার, তারা শেখার খাতিরে শিখেন এমন অন্য একটি বিমূর্ত ধারণা নয়)।

  3. উচ্চারণচিকিত্সক কথোপকথনটি "পয়েন্টারের সংজ্ঞা" হিসাবে পরিচিত

সুতরাং সব মিলিয়ে, আমি মনে করি পয়েন্টারগুলি সম্পর্কে শিখতে গিয়ে কমপক্ষে 3 "আহ" মুহুর্ত থাকা উচিত। আমি এখনও একজন শিক্ষার্থী তাই আমি ভেবেছিলাম যে আপনি এমন ধারণাটি শিখতে এখনও সতেজ (তুলনামূলকভাবে) সতেজ থাকা ব্যক্তির দৃষ্টিভঙ্গির প্রশংসা করবেন।


3 "আহ হা!" এর জন্য +1 monents। গ্রোকিং পয়েন্টার স্তরগুলিতে আসে। আমি দীর্ঘক্ষণ পয়েন্টগুলি "বুঝেছি" বুঝতে পেরেছিলাম আমি পয়েন্টারগুলিতে কেবল অর্ধেক বুঝেছিলাম :)
বাইনারি ওয়ারিয়ার

আমি মনে করি আপনি সম্পূর্ণ সঠিক যে 'পয়েন্টার না বোঝার' একটি খুব বড় অংশটি আসলে অদ্ভুত সি বাক্য গঠনতে ট্রিপ করছে tri [চিন্তাভাবনা: আমি ভাবছি যে এই জাতীয় সিনট্যাক্সটি নিয়েPointerTo<int> a
কুঁচকে উঠতে

সম্মত, @ বেঞ্জল। আমি অবাক হয়েছি যে বাক্য গঠনটি int* ipবেশি সাধারণ নয়। আমি শেষ পর্যন্ত পয়েন্টারগুলি বোঝার শুরু করলাম যখন আমি কোডটি দেখেছিলাম যা এই ধরণের ফর্ম্যাট হয়েছিল। তারপরে আমি এটি পড়তে পারি "আইপি টাইপ ইন্ট পয়েন্টার।"
জ্যাকব

19

পয়েন্টারটি আপনার ডেস্কটপে অ্যাপ্লিকেশন শর্টকাটের মতো কিছুটা। শর্টকাটটি মুছুন এবং লক্ষ্যটি এখনও বিদ্যমান। শর্টকাট শুরু করুন এবং লক্ষ্যটি শুরু হয়।

আমি সবসময় আমার ডেস্কটপে একটি টেক্সট ফাইল তৈরি করে এবং ফাইলটিতে দুটি শর্টকাট তৈরি করে এর কাজটি ব্যাখ্যা করি explain শর্টকাটগুলি অনুলিপি এবং মুছে ফেলার পরে আপনি লোকেরা 'রেফারেন্স' এর পিছনে ধারণাটি বুঝতে পারবেন।

গোষ্ঠীটি শর্টকাটের পিছনের মৌলিক বিষয়টি বুঝতে পারলে আপনি যেভাবেই চান পয়েন্টারগুলি ব্যাখ্যা করতে শুরু করতে পারেন। তারা সম্ভবত এটি খুব সহজেই বুঝতে পারবেন।


এটি কোনও খারাপ উপমা নয়। আক্ষরিকভাবে "হার্ড-লিঙ্ক" গ্রহণকারী যে কোনও ব্যক্তির জন্য কেবল কয়েকটি পয়েন্ট যুক্ত করার জন্য এটি সর্বদা তার টার্গেটের দিকে নির্দেশ করবে যদিও এটি ডিরেক্টরি পরিবর্তন করে, পয়েন্টারটি মূল স্মৃতিতে নির্দেশ করবে এমনকি বস্তুটি স্থানান্তরিত করা হয়েছে এমনকি যদি। একটি "হার্ড-লিঙ্ক" আপনাকে বলবে যখন লক্ষ্যটি আর উপস্থিত না থাকে, একটি ঝনঝন পয়েন্টার পয়েন্টারটি NULL এ সেট করা উচিত।
স্নকমডোনাল্ড

একটি শক্ত লিঙ্কটি একটি রেফারেন্স হিসাবে গণিত স্মার্ট পয়েন্টার
জেকে এর মতো।

1
+1 টি। পয়েন্টারগুলি ব্যাখ্যা করার জন্য অন্যতম সেরা ব্যবহারিক উপমা। আমি নিশ্চিত যে এই কার্যকারিতাটি সর্বাধিক সাধারণভাবে ব্যবহৃত হওয়ায় শিক্ষার্থীরা অবিলম্বে ধারণাটি পেয়ে যাবে।
কার্তিক শ্রীনিবাসন

13

8-10 বছর আগে, আমি একটি কমিউনিটি কলেজে একটি ইন্ট্রো "সি" কোর্স পড়িয়েছি। এটি অন্বেষণ করার জন্য সর্বদা একটি মজার বিষয় ছিল। যেটি সবচেয়ে ভাল কাজ করে বলে মনে হয়েছিল এবং এটি ডাব্লু / সহকর্মী সম্পর্কে কয়েকবার আলোচনা করার পরে একটি কফি কাপ এবং আপনার হাত ব্যবহার করা হয়েছিল।

আমি একটি কফি কাপের উপমা ব্যবহার করলাম (বা অ্যারেগুলির জন্য তাদের সারি) ভেরিয়েবল হিসাবে (এটি কিছু ধারণ করতে পারে)। তারপরে আমি আমার হাতটি ব্যবহার করলাম যা কিছু ধরে রাখতে পারে বা আমার তর্জনী আঙুলটি "পয়েন্ট টু" কফি কাপ বাড়িয়ে দিয়েছিল।

একটি ঘনিষ্ঠ হাতটি শূন্য ছিল, আমার মাথার দিকে একটি আঙুল দেখানো (একটি মক বন্দুকের মতো) ছিল ঝোলা পয়েন্টার।

তারপরে ডিবাগারের মাধ্যমে কয়েকটি বিক্ষোভ এবং ট্রিপ সহ, এটি বেশিরভাগের সাথে ক্লিক করে।


3
আপনি ইতিমধ্যে আমাকে বিভ্রান্ত করেছেন।
kirk.burleson

1
@ কির্ক, কীভাবে? আমি এটি পরিষ্কার করতে পারি কিনা তা আমাকে দেখতে দিন।
দেবসোলো

4
++ আপনাকে এই বিষয়গুলি সম্পর্কে ভাবিয়ে তুলতে শেখানোর মতো কিছুই নেই।
মাইক ডুনলাভে

বিশ্ববিদ্যালয়ে আমার একজন প্রভাষক কফির কাপের পরিবর্তে শিক্ষার্থীদের (যাদের মধ্যে একজন "নীল" ছিলেন, কফি কাপের পরিবর্তে) একই রকম কাজ করেছিলেন। শ্রোতাদের দিকে হাত-দোলা দিয়ে ইশারা করা ছিল একটি ঝোলা পয়েন্টার, কারণ এটি কোনও কিছুর দিকে ইশারা করতে পারে।
কাজ ড্রাগন

2
ঝুঁকিপূর্ণ পয়েন্টারটি হ'ল নীলকে ইশারা করার মতো, যেখানে আপনি যেদিকে ইঙ্গিত করছেন তার পরিবর্তন না করেই তাকে তার চেয়ারটি ছেড়ে দেওয়া ... তারপরে সেই পয়েন্টারটি অনুসরণ করার চেষ্টা করা এবং সেখানে কী শেষ হয়েছে তা নির্বিশেষে নীল হিসাবে আপনি সেখানে কী খুঁজে পেয়েছেন তা ব্যাখ্যা করার চেষ্টা করছেন।
জন পুর্ডি

10

"পয়েন্টারগুলিতে আপনি কীভাবে উপলব্ধি পেয়েছিলেন" প্রশ্নটি শুনে আমি সত্যিই বেশ চিন্তিত হই। আমি সর্বদা ভাবতাম ধারণাটি অবিশ্বাস্যরূপে সহজ, এবং ভাষাগুলির একটি যৌক্তিক বিবর্তন প্রোগ্রামারগুলিকে দুর্দান্ত শক্তি সরবরাহ করে।

যে বিষয়টি আমাকে চিন্তায় ফেলেছে তা হল পয়েন্টারগুলির ধারণাটি বুঝতে আমি কখনই অসুবিধা পাইনি। সুতরাং আপনি যখন এখানে "শেষ পর্যন্ত কখন পেয়েছেন" বারবার আসে, আপনি ভাবতে শুরু করেন:

আমি কি আসলে এটি পাই? আমি কি কখনও করিনি?

কারণটি ধারণাটি জটিল বলে মনে হচ্ছে তার কারণ, কারণ আমরা এখনও যারা তাদের মুখোমুখি হয়েছি তাদের সবাইকে বলি যে পয়েন্টারগুলি এত কঠিন, এবং এখানে আপনি শিখতে পারেন এমন একশ উপায় আছে?

এই ধারণাটি কেবল সেখানে ফেলে দিচ্ছি, অবশ্যই ব্যক্তিগতভাবে আমি একটি ভাল চিত্র পছন্দ করি এবং স্টিভ গিবসন সর্বদা যে কোনও কিছু ব্যাখ্যা করার জন্য দুর্দান্ত কাজ করে !


আকর্ষণীয় ... আপনি কোন ভাষাটি সে সময় ব্যবহার করেছিলেন? আমি মনে করি সি সিনট্যাক্স অনেক লোককে ট্রিপ করে। আপনি যদি সমাবেশ আগে জানতেন তবে আমি দেখতে পেতাম যে এটির একটি কারণ। [বিটিডাব্লু, আমি এটিতে ভোট দিতে চাই, তবে আমি আজকের জন্য আমার
ক্যাপটিতে

আকর্ষণীয়ভাবে যথেষ্ট, পাইথনে (এবং জাভা বিশ্ববিদ্যালয়ে) কাজ করে দীর্ঘকাল ধরে আমার "বিপজ্জনক" পয়েন্টার সম্পর্কে কোনও জ্ঞান ছিল না। তারপরে আমি একটি "অবজেক্ট ওরিয়েন্টেড মেথডস" মডিউল নিয়েছি যা সি ++ টি পছন্দমত ভাষা হিসাবে ব্যবহার করেছে এবং সেখানে সোজা হয়ে কবুতর।
মার্কাস হোয়ব্রো

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

+1 লোকেরা কেন পয়েন্টারগুলিকে শক্ত বা রহস্যময় বলে মনে করে তা আমার কোনও ধারণা নেই।
জিগাম্বেট

হ্যাঁ, পয়েন্টারগুলি সর্বদা এতই স্পষ্টতই সহজ এবং দরকারী যে আমি তাদের সম্পর্কে "শক্ত" কিছু আছে তা ভেবে ভাবতে পারি না। আমি এটিকে ঘৃণা করি যখন কোনও কোর্সের একজন শিক্ষক "এখন, এটি কিছুটা জটিল" কারণ এটি কেবল এতটা বিপর্যয়কর। জঘন্য জিনিসগুলি কেবল শিখিয়ে দিন, এবং শিক্ষার্থীরা তাদের সিদ্ধান্ত নেয় যে তারা এটিকে কঠিন বলে মনে করে।
জন পুরী

7

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


উপমা ব্যবহারের চেষ্টা না করে আরও আদিম বিমূর্ততা মানিয়ে নেওয়ার জন্য +1।
বেনামে টাইপ

আমার উচ্চ বিদ্যালয়ে কম্পিউটার স্টাডিজের একটি ইউনিট একটি ম্যাচবক্স কম্পিউটার অধ্যয়নের জন্য নিবেদিত ছিল , যা ব্ল্যাকবোর্ড থেকে কখনও স্পর্শ না করে বা সত্যিকারের কম্পিউটারের সাথে জড়িত না শেখানো যায়।
rwong

@ ল্যারি কোলম্যান, অ্যাসেম্বলি !!!!!!!!!!! সি এর আগে আমি এটি প্রথমে চেষ্টা করতে চাই দয়া করে বলুন কোথায় শিখতে শুরু করবেন। ফ্রি ইবুকস, ফ্রি পিডিএফ? আইডিই? অনুগ্রহ!!!!!!!!!!!!!!!!!!!
স্পেসজ লাই ওয়াং

7

পয়েন্টার হ'ল একটি ভেরিয়েবল যার মান অন্য ভেরিয়েবলের মেমরি ঠিকানা।


মার্জিত, এটিকে আরও জটিল করে তুলুন কেন।
বার্জার ফ্রেইন্ড-হানসেন

যদি পয়েন্টারগুলি তাত্ক্ষণিক স্বজ্ঞাত এবং কার্যকর না বলে মনে হয় তবে তাদের ভুল ব্যাখ্যা করা হয়েছে।
জন পূর্ব

6

আমি কীভাবে পয়েন্টার সম্পর্কে শিখেছি? একটি সাধারণ সংকলক কলেজের নতুন বছর লিখতে।

সাধারণ ব্যক্তির পদগুলিতে পয়েন্টারগুলি কীভাবে ব্যাখ্যা করবেন? আমি সূচক কার্ডে সঞ্চিত লাইব্রেরি ক্যাটালগের (তারিখ?) উপমা পছন্দ করি like প্রতিটি কার্ডে ("পয়েন্টার") কিছু বই ("ডেটা") কোথায় অবস্থিত সে সম্পর্কে তথ্য ধারণ করে তবে আসলে বইটি নিজেই ধারণ করে না। আপনি যদি কার্ডটি ("পয়েন্টার গাণিতিক") পরিবর্তন করেন তবে এটি যা করে তা পরিবর্তিত করে এটি কোন বইটির দিকে ইঙ্গিত করে এবং বইটির নিজের উপর কোনও প্রভাব পড়ে না - কেবল ঠিকানাটি স্ক্রু না করা সম্পর্কে সাবধানতা অবলম্বন করুন বা আপনি অস্তিত্বহীন বইয়ের দিকে নির্দেশ করতে পারেন এমনকি ভুল লাইব্রেরিও তবে, আপনি যদি কার্ডের "ঠিকানা" অনুসরণ করেন এবং গ্রন্থাগারের যথাযথ অংশে যান ("পয়েন্টারটিকে অবজ্ঞা করুন"), আপনি নিজেই বইটি দেখতে / পরিবর্তন করতে পারবেন।


আমার সিএস কোর্সের মেমরির জন্য +1 যেখানে আমার ঠিক সেই ব্যাখ্যাটি ছিল
গ্যারি রোউ

এটি একরকমভাবে ভাল তবে কিছুটা বিভ্রান্তিকর, কারণ কার্ডগুলি আসলে বইটি কোথায় তা বলে না । আপনার এখনও একটি স্নিকার-ভিত্তিক অনুসন্ধান অ্যালগরিদম কার্যকর করতে হবে need হতে পারে এই আরও ভাল একটি ডাটাবেস মডেল - একটি কী (কল নম্বর) দ্বারা কোনও সঞ্চিত বস্তুর রেফারিং করা।
ডেরেনডাব্লু

+1 উপমাটি বারফিল্ডএমভি দ্বারা ব্যাখ্যা করা মত একই ধারণাকে ধরে রেখেছে তবে আরও বাস্তব জীবনের পদ্ধতির সাথে।
কার্তিক শ্রীনীভাসন

5

আমি ধরে নেব যে কেউ পয়েন্টার শিখতে যাচ্ছে তারা জানেন যে সাধারণ পরিবর্তনকগুলি কী এবং তারা সি-তে কীভাবে কাজ করে। এখন, আসুন এর কয়েকটি বৈশিষ্ট্য সহ পয়েন্টারগুলি সংজ্ঞায়নের চেষ্টা করি-

  • এগুলিও পরিবর্তনশীল, তবে ভিন্ন প্রকৃতির। ধরুন ভেরিয়েবল স্পেসে দুটি স্তর রয়েছে। বিভিন্ন ধরণের সাধারণ ভেরিয়েবলগুলি উপরের স্তরে থাকে এবং নীচের স্তরে পয়েন্টার থাকে। এই চিত্র মত-

    বিকল্প পাঠ

  • 'পয়েন্টার' নামটি যেমন বোঝায়, পয়েন্টারগুলি কোনও কিছুর দিকে পয়েন্ট করতে পারে। আমাদের আঙুলের মতো কিছু জিনিসকে নির্দেশ করতে পারে। তারা কি জিনিস নির্দেশ করে? এগুলি হ'ল সাধারণ ভেরিয়েবল। সংক্ষেপে, "পয়েন্টারগুলি স্বাভাবিক ভেরিয়েবলগুলিতে নির্দেশ করে"।

  • সাধারণ ভেরিয়েবলের মতো পয়েন্টারগুলিও একই সংখ্যক প্রকারের ইন্ট, চর বা ফ্লোটের মতো। এবং নির্দিষ্ট ধরণের একটি পয়েন্টার কেবল একই ধরণের ভেরিয়েবলগুলিকে নির্দেশ করতে পারে।
  • একটি পয়েন্টার একটি ভেরিয়েবলের দিকে নির্দেশ করতে পারে এবং পরে একই পয়েন্টারটি অন্য ভেরিয়েবলের দিকে নির্দেশ করতে পারে। শুধু টাইপ একই হওয়া উচিত। সুতরাং, কিছু ভেরিয়েবলের সাথে পয়েন্টারের সংস্থান স্থায়ী নয় এবং পরিবর্তিত হতে পারে।
  • সুতরাং, কিভাবে একটি পয়েন্টার ঘোষিত হয়? প্রায় স্বাভাবিক ভেরিয়েবলের মতো। আপনাকে একটি তারকাচিহ্ন ( *) দিয়ে পূর্বে নাম করতে হবে । Like-

    int *pointer;
    
  • তারপরে, কোনও পয়েন্টারটি ভেরিয়েবলের সাথে কীভাবে যুক্ত? &এই বিবৃতিটির মত চলকের আগে অপারেটরটি ব্যবহার করে-

    pointer = &variable;
    
  • কোনও ভেরিয়েবলকে নির্দেশ করে কীভাবে পয়েন্টার ব্যবহার করা হয়? এটি একটি নক্ষত্র ( *) দিয়ে নামের পূর্বেও করা হয় । তারপরে এটি ভেরিয়েবলের জায়গায় ব্যবহার করা যেতে পারে এটি এখনই নির্দেশ করছে-

    *pointer = var1 + var2;
    

    পরিবর্তে

    variable = var1 + var2;
    
  • এখন কিছু কোড সহ পয়েন্টার নিয়ে খেলুন। এখনই পয়েন্টারগুলির এই বৈশিষ্ট্যগুলিতে অভ্যস্ত হন। এই বিন্দু পর্যন্ত, আমরা পয়েন্টার কি সম্পর্কে কথা বলছি। একবার আপনি এটির সাথে ঠিক হয়ে গেলে, তারপরে অধ্যয়ন শুরু করুন কীভাবে পয়েন্টারগুলি কিছু পরিবর্তনশীলকে নির্দেশ করছে এবং যদি সাধারণ গাণিতিক ক্রিয়াকলাপগুলি প্রয়োগ করা হয় তবে তারা কীভাবে প্রতিক্রিয়া দেখায়। তারপরে পয়েন্টার এবং অ্যারে এবং পয়েন্টারগুলির সাথে পয়েন্টারগুলির মধ্যে সম্পর্কের জন্য যান।

পয়েন্টার শেখার বিষয়ে আমি এটাই পরামর্শ করব।


আমি "প্রথমে এটি কীভাবে হয়" প্রক্রিয়াটি অনুসরণ করতে চেয়েছিলাম। বিমূর্ততা!
গুলশান

5

প্রশ্নের সংশোধিত প্রয়োজনের সমর্থনে সম্পাদিত

আমার "পোস্ট-পয়েন্টার" বোঝার দিকে (যদি আমি সঠিকভাবে স্মরণ করি) এর পথটি এভাবে চলে গেল। আমি যখন বিবিসি মাইক্রো নিয়ে এখনও ঘুরছিলাম তখন থেকেই অ্যাসেম্বলি প্রোগ্রামিংয়ের কিছু সহজ অভিজ্ঞতা পেয়েছিলাম তাই আমার কাছে বাক্সের গুচ্ছ হিসাবে স্মৃতি ধারণার ধারণাটি ছিল (এর জন্য নীচে দেখুন)। এটি অ্যারে ব্যবহারের মাধ্যমে আরও চাঙ্গা হয়েছিল। যাইহোক, আমি সি জগতে যাচ্ছিলাম এবং স্ট্রিংগুলির সাথে ডিল করতে হয়েছিল এবং এর অর্থ পয়েন্টার। বেসিকে এটি ছিল তুচ্ছ, এসেম্বলারের ক্ষেত্রে আমাকে কখনই তাদের সাথে কাজ করতে হয়নি, এবং এখন ক্লাসিক সিতে এটি সমস্ত পয়েন্টার এবং স্টাফ রয়েছে। আহ, তবে আমি এ জাতীয় স্ট্রিং দিয়ে নালায় ফিরে যেতে পারি:

char s[] = "Hello, world!";
printf("%s",s);

ভাল এবং ভাল, এটি অক্ষরের একটি অ্যারে (আমার ছোট্ট পৃথিবীতে প্রতিটি চরিত্রের জন্য 8 বিট) যেখানে শূন্য হয় সেখানে দেখায় এটির জন্য একটি শূন্য অক্ষর রয়েছে। প্রিন্টফ ঠিক সেই অ্যারে নেয় এবং এটি মুদ্রণ করে এটির উপরে চলে। তবে আমি যদি এই স্ট্রিংটি কোনও ফাংশনে পাস করতে চাই তবে কী হবে?

void print_str(char* p) {
  printf("%s",p);
}

ম্যানুয়ালটি কি বলে, তবে এটি * কি? হুম, চর * এর অর্থ "একটি চরকে পয়েন্টার"। ঠিক আছে ... আমাকে হারিয়েছে। তারপরে এটি আমার উপর ছড়িয়ে পড়ে যে চর * পি এর সাথে সমান [0] করে। ঠিক আছে, আমি এটি ব্যবহার করতে পারি, তবে পয়েন্টারগুলি কী তা আমি এখনও দ্বিগুণ করিনি। আমি বলতে চাইছি, আমি কীভাবে এইগুলির একটির সাথে কিছু ডেটা সেট করব? ম্যানুয়ালটি আবার বন্ধ করুন ...

char* p = "Hello World!";

উপরের লেখার সাথে সাথে আমি নিজেকে বলছি "একটি চরকে একটি পয়েন্টার ঘোষণা করুন এবং এটি অক্ষরের এই অ্যারের সমান সেট করুন"। কোনওভাবে যে পয়েন্টার একটি অ্যারের প্রয়োজনীয়তা সরিয়ে দেয়। অনুমান করুন যে এটি সংকলক আমার জন্য কিছু জিনিস পরিবর্তনের জন্য করছে। সুতরাং আমি কিভাবে এই পয়েন্টার দিয়ে অ্যারে পরিবর্তন করতে পারি? আমি জানি যে আমি অ্যারে সংস্করণটি ব্যবহার করতে পারি

 s[2] = 'L'; 

তবে "পয়েন্টার স্পিকার" এর সমতুল্য কী? আবার সেই ম্যানুয়াল বন্ধ করুন ...

*(p+2) = 'L';

আমি মনে করি যে * এর সহজ অর্থ "মেমরি ঠিকানার বিষয়বস্তু" এবং (p+2)তা s[2]। যার অর্থ পয়েন্টার পি ছিল ... কেবল ... একটি ... ঠিকানা ... বং!

যে সেখানে আলোকিত শব্দ আছে। আমি হঠাৎ পয়েন্টারগুলিকে দু'দিকে টেনে এনেছিলাম (এটি অনেক দিন আগে ছিল, আমরা পুরানো টাইমাররা পরে অবধি "কুঁচকানো" করিনি)। এটা ঠিক ইন্ডিয়ারেশন ছিল।


মূল:

ঠিক আছে, আমার 2 সি মূল্য:

কল্পনা করুন মেমরি একটি বাক্সের গুচ্ছ। প্রতিটি বাক্সের পাশের একটি নম্বর রয়েছে (ঠিকানা)। প্রতিটি বাক্সে একটি সংখ্যা থাকে (বিষয়বস্তু)। আপনি এই বাক্সগুলির সাথে 2 উপায়ে কাজ করতে পারেন: ভেরিয়েবল (আমি বক্স এন এর বিষয়বস্তু চাই), পয়েন্টার (বাক্স এনতে যা কিছু আছে বাক্সের সামগ্রীগুলি চাই )। পয়েন্টারগুলি সহজভাবে নির্দেশনা ction

এবং বড় উত্তরের জন্য যা আপনাকে যা জানার প্রয়োজন হবে সবগুলি কভার করে - এটি পড়ুন


++ আমি যেভাবে সাবজেক্টটি শিখিয়েছি সেটাই কমবেশি।
মাইক ডুনলাভে

ওপি প্রয়োজনীয়তা সমর্থন করার জন্য নিবন্ধ সম্পাদিত।
গ্যারি রোউ

আপনি কোন ম্যানুয়াল ব্যবহার করছেন যা আপনার স্ট্রিং শেষে অতিরিক্ত নুল অক্ষর যুক্ত করেছে?
রব গিলিয়াম

@ রাইমেশ খুব পুরানো (১৯৯১ সালের দিকে)। কোনটা মনে নেই।
গ্যারি রোয়ে

1991? এটি সি ভাষার ম্যানুয়ালটির পক্ষে পুরানো নয় - কে ওআরআর এর প্রথম সংস্করণটি 1978 সালে প্রকাশিত হয়েছিল! কেবল কৌতূহল ছিল যে সেখানে কখনও একটি ম্যানুয়াল ছিল যা আপনাকে পরামর্শ দিয়েছিল যে আপনার স্ট্রিং ধ্রুবকের শেষে আপনাকে \ 0 রাখতে হবে। (প্রকৃতপক্ষে, আবার এটির দিকে তাকানো, আপনার কি বোঝানো উচিত \ n?)
রব গিলিয়াম

4

কাঠের কিছু ছোট ব্লক পান।

এক প্রান্তে ধাতব হুক এবং অন্য প্রান্তে ধাতব চোখ যুক্ত করুন।

আপনি যে জিনিসগুলি খেলতে পারেন তাতে এখন আপনি একটি লিঙ্কযুক্ত তালিকা করতে পারেন।

এই শারীরিক প্রপ সঙ্গে ব্যাখ্যা করার চেষ্টা করুন। প্রথম বর্ষের (নতুনদের) শিক্ষার্থীদের নির্দেশকারীদের শেখানোর সময় আমি প্রায়শই এই কাজটি করতাম।

ছোট ধাতব হুক হল পয়েন্টার, কাঠের ব্লকটি জিনিসটি নির্দেশ করেছে।

ব্লকগুলির সাথে খেলার পরে কাউকে এটি পাওয়ার জন্য আমি প্রতিজ্ঞা করি।


4

আমি আমার জীবনকে আরও সহজ করে দিয়েছি যখন আমি সবেমাত্র সমস্ত ফ্লাফ সরিয়ে দিয়েছিলাম এবং পয়েন্টারটিকে কিছু যাদুকর সত্তার পরিবর্তে অন্য পরিবর্তনশীল হিসাবে বিবেচনা করতে শুরু করি (অনেক আগে 11 ম শ্রেণিতে) .. মাত্র 3 টি জিনিস জেনে থাকুন:

  1. পয়েন্টার একটি পরিবর্তনশীল যা অন্য ভেরিয়েবলের ঠিকানা সঞ্চয় করে (বা কেবল কোনও ঠিকানা)।
  2. * পয়েন্টার ভেরিয়েবলের মধ্যে থাকা মেমরির অবস্থানটিতে মান পেতে ব্যবহৃত হয়।
  3. & অপারেটর একটি মেমরি অবস্থানের ঠিকানা দেয়।

বাকিটি সিনট্যাকটিক চিনি এবং সাধারণ জ্ঞান .. কেবলমাত্র কিছু সাধারণ সি প্রোগ্রাম লিখুন (লিঙ্কযুক্ত তালিকার লাইব্রেরি বাস্তবায়নের জন্য) এটির একটি হ্যাং পেতে পয়েন্টার ব্যবহার করে।


2
  1. পয়েন্টারটিকে একটি সূচকে একটি অ্যারেতে সাধারণকরণ হিসাবে ভাবা যেতে পারে।
    • বিবেচনা করুন যে একটি বড় অ্যারেটি কয়েকটি ছোট, অ-ওভারল্যাপিং, ভেরিয়েবল-আকারের অ্যারেগুলিতে কাটা যেতে পারে। এখন, এই ছোট অ্যারেগুলি আমরা সাধারণত অ্যারে হিসাবে মনে করি। বড়টি হ'ল কম্পিউটারের সম্পূর্ণ মেমরির স্থান। ছোট অ্যারেগুলি কেটে ফেলার প্রক্রিয়াটিকে মেমরি বরাদ্দ বলা হয়।
  2. কাঠামোগুলির একটি সেট যা কিছু পয়েন্টার দ্বারা একত্রে লিঙ্ক করা হয় নির্দেশিত গ্রাফ হিসাবে ভাবা যেতে পারে ।
    • প্রতিটি প্রান্তিক একটি পরিবর্তনশীল যা কিছু মান ধরে রাখতে পারে।
    • কিছু ভেরিয়েবল পয়েন্টার হয় এবং প্রতিটি পয়েন্টারে হ'ল এক বহির্গমন প্রান্তটি অন্য কোনও কিছুর মধ্যে থাকতে পারে।
    • ভেরিয়েবলগুলি যা পয়েন্টার নয় এটির কোনও বহির্গামী প্রান্ত থাকবে না। তাদের যে কোনও সংখ্যক আগত প্রান্ত থাকতে পারে।

2

আমি আমার পয়েন্টার-আহ-মুহুর্তের পরিস্থিতিটি বেশ স্মরণ করতে পারছি না, তবে আমি সি-স্টাইল অ্যারের সম্পর্কে আমার বোঝার আশেপাশের প্রতিক্রিয়াটিকে স্মৃতিতে প্রতিফলিত করেছি। (যেমন arr[3]হিসাবে একই *(arr+3))

কোনও কারণে আমি যখনই কোনও পয়েন্টার-পরিস্থিতি নিয়ে ঘটে তখন পয়েন্টারগুলিকে অ্যারে হিসাবে দেখা অপরিসীম সহায়ক বলে মনে করি।


2

মূলত @ গ্যারি রোউ সঠিক মডেলটি চালু করেছিলেন। ঠিকানাগুলির সাথে বাক্সগুলির একটি সেট হিসাবে স্মৃতি (সংখ্যা)। প্রতিটি বাক্স একটি মান (নম্বর) সঞ্চয় করে।

পয়েন্টারের ধারণাটি হ'ল একটি বাক্সে মানটিকে অন্য বাক্সের ঠিকানা হিসাবে ব্যাখ্যা করা। এই মানটি একটি নির্দিষ্ট বাক্সে উল্লেখ করতে ব্যবহৃত হয় , এজন্য এটিকে একটি রেফারেন্স বলা হয় । সুতরাং ডিফেরেন্সিং হল সেই বাক্সটি খোলার প্রক্রিয়া যা উল্লেখ করা হয়।

যদি vএকটি ভেরিয়েবল (বাক্স) হয়, তবে বিবৃতিটি

  • vএর অর্থ হল v, বাক্সে যা আছে তা আমাকে দিন
  • *vএর মানে হল মানকে অবলম্বন করা v, অর্থাৎ বাক্সে যা আছে তার মান দিয়ে আমাকে মূল্য দিনv
  • &vরেফারেন্স অর্থ v, আমাকে বাক্সে ঠিকানা দিন

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

পয়েন্টারগুলি ব্যাখ্যার বিষয়। আমি মনে করি এটি ব্যাখ্যা করা যা বিষয়গুলি অনেক সহজ করে তোলে। 10 টি ভেরিয়েবলের মেমরির সাথে একটি সাধারণ উদাহরণ দেখানো হলে পয়েন্টার গাণিতিকগুলি অত্যন্ত সাধারণ এবং স্বজ্ঞাত ক্রিয়াকলাপ।


2

আমি যে ব্যাখ্যাটি সত্যই ভ্রষ্ট করেছিলাম তা হ'ল:

জমির টুকরোয় নির্মিত বিভিন্ন বাড়িঘর সহ একটি নগর গ্রিড বিবেচনা করুন। আপনার হাতে আপনি একটি কাগজের টুকরা ধরেন। আপনি যে কাগজে লিখেছেন:


ডেভিডের বাড়ি,

112 তাই এবং তাই রাস্তায়।


কাগজ (পয়েন্টার ভেরিয়েবল) টুকরা একটি ঠিকানা যে রয়েছে পয়েন্ট ডেভিড বাড়িতে। আপনি যখন কোনও বন্ধুকে ডেভিডের শীতল বাড়ির দিকে নজর রাখতে বলতে চান তখন মেইলে আসল দুটি গল্পের বিল্ডিং প্রেরণের চেয়ে বাড়ির রেফারেন্স হিসাবে কাগজের পাইস ব্যবহার করা অনেক সহজ is

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


2

আপনি যদি পয়েন্টারগুলি ব্যাখ্যা করতে চান তবে আপনাকে প্রথমে মেমরিটি ব্যাখ্যা করতে হবে। আমি সাধারণত সারি এবং কলামগুলির সাথে গ্রাফ পেপার / স্কোয়ার্ড পেপার ব্যবহার করি। "ছাত্র" স্মৃতি বুঝতে পারলে তিনি ঠিকানা কী তা বুঝতে পারবেন। আপনি যদি ঠিকানা পেয়ে থাকেন তবে পয়েন্টার পেয়েছেন।

আপনি এই বিমূর্ততা দিয়ে খেলতে পারেন। যেমন একটি বর্গের ঠিকানা (নম্বর) অন্য স্কোয়ারে লিখুন। এখন পয়েন্টার স্কোয়ার থেকে গন্তব্য স্কোয়ারে একটি তীর আঁকুন। এখন পয়েন্টারটি ওভাররাইট করুন (যেমন এটি বৃদ্ধি করুন) এবং তীরটি সামঞ্জস্য করুন। অন্য স্কোয়ারে একটি ঠিকানা লিখুন এবং শিক্ষার্থীকে তীরটি আঁকতে দিন ...

পরবর্তী পদক্ষেপ: নির্দিষ্ট স্কোয়ার (পয়েন্টারের মতো) একটি নাম দিন। এখন আপনি ডিসিফেরেন্সিং ব্যাখ্যা করতে পারেন। এটাই.


2
ইলেকট্রন ব্যবহার করে এমন একটিতে আমার হাত পাওয়ার আগে আমি যে "কম্পিউটার" ব্যবহার করেছিলাম তা মনে করিয়ে দেয় - কার্ডবোর্ড "CARDIAC" আমার মনে হয় এটি বলা হয়েছিল। আক্ষরিক অর্থে, অন্যান্য নম্বরযুক্ত বাক্স থেকে নম্বর পেতে সংখ্যাযুক্ত বাক্সে নম্বর লিখুন। এটি শিক্ষামূলক ছিল এবং সত্যিকারের মাইক্রোপ্রসেসরগুলিতে পয়েন্টার বোঝার জন্য আমার কখনই সমস্যা হয়নি।
ডেরেনডাব্লু

2

সম্ভবত এটি কেবল আমি, তবে আমি উপমাগুলি দিয়ে ভালভাবে কাজ করি। সুতরাং আসুন আমরা বলি যে আপনার একটি বন্ধু রয়েছে (ফাংশন / ক্লাস) "ফু", যিনি অন্য কারও (বিভিন্ন ফাংশন / শ্রেণি), "বার" রাখতে চান, কোনও কারণে আপনার সাথে যোগাযোগ করুন। "ফু" আপনাকে "বার" দেখতে যেতে পারে, তবে এটি সুবিধাজনক নয়, এই সমস্ত প্রাণীকে (দৃষ্টান্ত) চারদিকে নিয়ে যায়। তবে, "ফু" আপনার বার নম্বর "বার" পাঠাতে পারে (পয়েন্টার)। এইভাবে, আপনি যেখানেই থাকুন না কেন, "ফু" আপনাকে খুঁজে না পেয়ে কীভাবে আপনার সাথে যোগাযোগ করতে জানে।

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


2

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


একেবারে। আপনি যখন নিবন্ধগুলি নিয়ে কাজ করেন, এবং তাত্ক্ষণিক মান এবং অপ্রত্যক্ষ সম্বোধনের মতো জিনিসগুলি বোঝেন, তখন পয়েন্টারগুলির পুরো ধারণাটি স্বজ্ঞাত। আমি আমার প্রথম লাইনের সি লিখার আগে 6502 সমাবেশ এবং তারপরে 68 কে অ্যাসেম্বলি শিখেছি, সুতরাং পয়েন্টারগুলির সাথে আমার পরিচয় হওয়ার সাথে সাথে আমি সংকলকের (মধ্যবর্তী) অ্যাসেম্বলির দিকে তাকিয়েছিলাম এবং এটি প্রত্যাশার মতোই ছিল।
Radian

2

আমার "আহা!" এই টিউটোরিয়ালে মুহুর্তটি এসেছিল:

সি তে পয়েন্টার এবং অ্যারে সম্পর্কিত একটি টিউটোরিয়াল

নির্ভুলভাবে বলতে গেলে, এটি এই অধ্যায়ে এসেছে: অধ্যায় 3: পয়েন্টার এবং স্ট্রিং

আরও স্পষ্ট করে বলতে গেলে, এটি এই বাক্যটি নিয়ে এসেছে:

Puts () কে দেওয়া প্যারামিটারটি একটি পয়েন্টার, এটি পয়েন্টারের মান (যেহেতু সিতে সমস্ত পরামিতি মান দ্বারা পাস হয়), এবং একটি পয়েন্টারের মান হল যে ঠিকানাটি এটি নির্দেশ করে, বা, কেবল একটি ঠিকানা ।

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

কারণ আপনি দেখতে পাচ্ছেন যে, প্রতিটি সি টিউটোরিয়াল বা বই আমি এর আগে পড়েছি তা দৃ had়ভাবে জানিয়েছিল যে সি মান বা রেফারেন্স দিয়ে যেতে পারে, এটি একটি নেপথ্য মিথ্যা। সত্যটি হ'ল সি সর্বদা মান দ্বারা পাস হয় তবে কখনও কখনও মানটি একটি ঠিকানা হিসাবে ঘটে। পদ্ধতি মধ্যেই একটি কপি ঠিকানাটি দিয়ে তৈরি হয় একটি অনুলিপি ঠিক কোন int পাস দিয়ে তৈরি করা হবে। একটি অনুলিপি না মান যা পয়েন্টার পয়েন্ট তৈরি। সুতরাং পদ্ধতির মধ্যে পয়েন্টার ব্যবহার করে আপনি মূল মানটি অ্যাক্সেস করতে এবং এটি পরিবর্তন করতে পারেন।

আমি কখনই সি প্রোগ্রামার হয়ে উঠিনি, তবে আমি একটি নেট প্রোগ্রামার হয়েছি, এবং অবজেক্টস এবং অবজেক্টের রেফারেন্স একইভাবে কাজ করে; অবজেক্টের রেফারেন্সটি মান দ্বারা পাস হয় (এবং এভাবে অনুলিপি করা হয়) তবে অবজেক্টটি নিজেই অনুলিপি করা হয় না। আমি এমন অনেক প্রোগ্রামারকে ঘিরে কাজ করেছি যারা এটি বুঝতে পারে না কারণ তারা কখনই পয়েন্টার শিখেনি।


1

কৌশলটি ব্যাখ্যা করে বোঝানো হয় যে কোনও জিনিসের অবস্থান এবং জিনিসটি নিজেই এক নয়, ঠিক যেমন পাইপের কোনও চিত্র পাইপ নয় । আপনি যখন কোনও জিনিস সরান, তার অবস্থান পরিবর্তন হয় changes অবস্থানটি এবং অন্য কোনও জিনিস সেখানে রাখা যেতে পারে।


1

পয়েন্টার হ'ল একটি স্টিকি নোট যা আপনাকে জানায় যে দরকারী কিছু কোথায়। এটিতে জিনিসটির অবস্থান রয়েছে এবং আপনাকে জানায় যে জিনিসটি কত বড় (সি তে, যাইহোক)। সুতরাং একটি ডাবল পয়েন্টারটি একটি স্টিকি নোটের মতো যা বলে যে "ফ্রিজে একটি ছয় প্যাক রয়েছে"। কোক বা বুডউইজার কিনা তা খুঁজে বের করতে আসলে আপনাকে ছয়টি প্যাক নিতে হবে।


1

কোড দেওয়া:

int v=42; // একটি সাধারণ ভেরিয়েবল ঘোষণা এবং সূচনা

int *p = &v; // ভেরিয়েবলের পয়েন্ট পি তৈরি করা v

উপরের কোড সম্পর্কে নিম্নলিখিত বলা যেতে পারে:

int * p // "int পয়েন্টার পি" ... আপনি এভাবেই টাইপ এর ভেরিয়েবলের জন্য পয়েন্টার ঘোষণা করেন

*p // "পি দ্বারা নির্দেশিত" ... এটি সেই ডেটা যা পি নির্দেশ করে, এর মতো v v

&v // "ভেরিয়েবলের ঠিকানা v" ... এটি পি এর আক্ষরিক মান উপস্থাপন করে


1

http://cslibrary.stanford.edu/

পয়েন্টার এবং মেমরি পরিচালনা শেখার জন্য এই সাইটে দুর্দান্ত টিউটোরিয়াল রয়েছে।

আমি আপনাকে সাইটটিতে প্রদত্ত পয়েন্টার বেসিক, পয়েন্টার এবং মেমরির মধ্য দিয়ে চলার পরামর্শ দিচ্ছি। আপনি পয়েন্টার ধারণাটি আরও জোরদার করতে লিঙ্কে প্রদত্ত লিঙ্কযুক্ত তালিকার সমস্যাগুলিও দেখতে পারেন।


1

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

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

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

কেউ একবার এই মৌলিক পদক্ষেপগুলি বুঝতে পেরে তাদের সোজা এগিয়ে যাওয়ার জন্য আপনি অনির্দিষ্টকালের জন্য পয়েন্টারগুলি শৃঙ্খলাবদ্ধ করতে পারবেন, যতক্ষণ আপনি প্রকৃত ডেটা অবজেক্ট সন্ধানের জন্য ঠিক কত বার ঠিকানার দিকে নজর রাখতে হবে তা ট্র্যাক করে রাখেন।

কেউ একবার পয়েন্টার ধরলে, পরের জিনিসটি তাদের দ্রুত বুঝতে হবে হ্যাপ মেমরি এবং স্ট্যাক মেমরির মধ্যে পার্থক্য এবং পদ্ধতির বাইরে যাওয়ার সময় স্ট্যাক মেমরির দিকে কেন পয়েন্টারগুলি বিপজ্জনক।


0

আমার মনে আছে "সি ধাঁধা" বা এর মতো একটি বই, যা আমি খাঁটিভাবে পড়েছি কারণ এটি গ্রন্থাগারে পাওয়া কয়েকটি প্রোগ্রামিং / কম্পিউটার সম্পর্কিত বইগুলির মধ্যে একটি ছিল, আমার সি সম্পর্কে আমার ধারণাটি প্রাথমিক ছিল। এটি আপনাকে দেখে সি এক্সরেসিসন ফেলে দিয়েছিল এবং আরও বিঘ্নিত হয়ে ওঠে, এটি বিস্ফোরিত করতে বলে।


0

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


0

আমি এটি করার আগে আমি ব্যাখ্যা করেছি যে প্রোগ্রামিংয়ে "সবকিছুই মেমরি ব্যবহার করে", এবং (স্ট্যাটিক) মেমরির ক্ষেত্রে পরিবর্তনশীল বরাদ্দ। আমি মেমরি ঠিকানা কী এবং মেমরির স্থান, মেমরি ঠিকানা এবং ভেরিয়েবলের মধ্যে সম্পর্ক ব্যাখ্যা করব।

পরিশেষে, আমি ব্যাখ্যা করেছি যে এখানে পূর্ণসংখ্যার ডেটা টাইপ এবং ভেরিয়েবলস, স্ট্রিং ডেটা টাইপ এবং ভেরিয়েবল ... এবং আরও অনেক কিছু রয়েছে, যতক্ষণ না বোঝানো পর্যন্ত একটি বিশেষ ডাটা টাইপ রয়েছে যা মেমরি অ্যাড্রেসগুলি সঞ্চয় করে, যার শূন্য মান 0 ও "", নাল বলা হয়

এবং পরিশেষে, পয়েন্টার ব্যবহারের মাধ্যমে গতিশীলরূপে ভেরিয়েবলগুলি বরাদ্দ করা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.