সি পয়েন্টারগুলির জন্য কেন নক্ষত্র ব্যবহার করে?
খালি - কারণ বি করেছে।
মেমরিটি একটি লিনিয়ার অ্যারে হওয়ায় এই অ্যারেতে সূচক হিসাবে কোনও কক্ষের মানটি ব্যাখ্যা করা সম্ভব হয় এবং বিসিপিএল এই উদ্দেশ্যে অপারেটর সরবরাহ করে। মূল ভাষায় এটি বানান করা হয়েছিল rv
, এবং পরে !
বি বি ইউনারি ব্যবহার করেছে *
। সুতরাং, যদি p
কোনও ঘর যদি অন্য কক্ষের সূচক (বা ঠিকানা), বা পয়েন্টার) *p
সমন্বিত থাকে তবে পয়েন্ট-টু সেলটির বিষয়বস্তুগুলিকে রেফারেন্সের মান হিসাবে বা একটি অ্যাসাইনমেন্টের লক্ষ্য হিসাবে বোঝায়।
সি ভাষার উন্নতি থেকে of
এটাই. এই মুহুর্তে, প্রশ্নটি উদ্বেগহীন হিসাবে "পাইথন 3 .
কোনও পদ্ধতি কল করতে কেন ব্যবহার করে? কেন নয় ->
?" আচ্ছা ... কারণ পাইথন 2 .
একটি পদ্ধতি কল করার জন্য ব্যবহার করে।
খুব কমই একটি ভাষার অস্তিত্ব নেই। এর প্রভাব রয়েছে এবং এটি আগে এসেছিল এমন কিছুর উপর ভিত্তি করে।
সুতরাং, কেন বি !
পূর্বসূরি বিসিপিএলের মতো পয়েন্টারকে ডিফ্রান্সিংয়ের জন্য ব্যবহার করলেন না ?
ঠিক আছে, বিসিপিএল কিছুটা কথার ছিল। পরিবর্তে &&
বা ||
বিসিপিএল ব্যবহৃত হয়েছে logand
এবং logor
। এটি হ'ল বেশিরভাগ কীবোর্ডগুলিতে ∧
বা ∨
কী থাকে না এবং সমান নয় আসলে শব্দটি ছিল NEQV
( বিসিপিএল রেফারেন্স ম্যানুয়াল দেখুন )।
এই সমস্ত লজিকাল অপারেটরদের জন্য প্রোগ্রামাররা প্রায়শই ঘন ঘন ঘন শব্দের চেয়ে দীর্ঘ শব্দ না দিয়ে বি আংশিকভাবে বাক্য গঠনকে আরও শক্ত করতে অনুপ্রাণিত করেছিল। এবং এইভাবে !
বিন্যাসের জন্য হয়ে উঠল *
যাতে !
যুক্তিযুক্ত অবহেলার জন্য ব্যবহার করা যেতে পারে। নোটারী *
অপারেটর এবং বাইনারি *
অপারেটরের (গুণ) এর মধ্যে পার্থক্য মনে করুন ।
ঠিক আছে, অন্যান্য বিকল্পগুলি সম্পর্কে কি ->
?
->
ক্ষেত্র derefrences প্রায় অন্বিত চিনি জন্য নিয়ে যাওয়া হয় struct_pointer->field
যা(*struct_pointer).field
অন্যান্য বিকল্পের মতো <-
অস্পষ্ট পার্সিং তৈরি করতে পারে। উদাহরণ স্বরূপ:
foo <- bar
এটি কি পড়তে হবে:
(foo) <- (bar)
অথবা
(foo) < (-bar)
বাইনারি অপারেটর এবং অন্য একটি ইউনারি অপারেটরের সমন্বয়ে গঠিত অ্যানারি অপারেটর তৈরির ক্ষেত্রে সমস্যা হওয়ার সম্ভাবনা রয়েছে কারণ দ্বিতীয় ইউনিারি অপারেটর অন্য এক্সপ্রেশনটির উপসর্গ হতে পারে।
তদ্ব্যতীত, ঘন ঘন টাইপ করা জিনিসগুলি সর্বনিম্ন রাখার চেষ্টা করা আবার গুরুত্বপূর্ণ। আমি চাই ঘৃণা লেখার আছে:
int main(int argc, char->-> argv, char->-> envp)
এটি পড়াও কঠিন হয়ে পড়ে।
অন্যান্য চরিত্রগুলি সম্ভবত সম্ভব @
ছিল ( অবজেক্টিভ সি এটি বরাদ্দ না করা পর্যন্ত এটি ব্যবহৃত হয়নি )। যদিও আবার, এটি 'সি ব্যবহারগুলি *
কারণ বি করেছে' এর মূলটিতে যায়। কেন বি ব্যবহার করলো না @
? ঠিক আছে, বি সমস্ত চরিত্র ব্যবহার করেনি। কোনও bpp
প্রোগ্রাম ছিল না ( সিপিসি তুলনা করুন ) এবং অন্যান্য অক্ষরগুলি বিতে উপলব্ধ ছিল (যেমন #
পরে সিপিপি ব্যবহার করেছিল)।
আমি যদি কোনও অনুমান করতে পারি তবে কেন কী - কীগুলি তা এটির কারণেই। বি এর একটি ম্যানুয়াল থেকে :
অ্যাড্রেসগুলিতে হেরফের করার পরামর্শ দেওয়া উচিত বলে মনে করা হয়, বি দুটি ইউনিারি অ্যাড্রেস অপারেটর সরবরাহ করে *
এবং &
। &
ঠিকানা অপারেটর তাই &x
এর ঠিকানা হল x
, অভিমানী এটা এক হয়েছে। *
ইন্ডিয়ারেশন অপারেটর; *x
মানে "ঠিকানা হিসাবে এক্স এর সামগ্রী ব্যবহার করুন।"
নোটটি &
শিফট -7 এবং *
শিফট -8 একে অপরের সাথে তাদের সান্নিধ্যতা প্রোগ্রামারের কাছে তারা কী করে সে সম্পর্কে একটি ইঙ্গিত হতে পারে ... তবে এটি কেবল অনুমান। কেন থম্পসনকে জিজ্ঞাসা করতে হবে যে এই পছন্দটি কেন করা হয়েছিল।
তাই সেখানে যদি আপনি এটি আছে. সি ছিল সেভাবে because বি সেভাবে হয় কারণ এটি বিসিপিএল কেমন ছিল তা থেকে পরিবর্তন করতে চেয়েছিল।
->
সি ভাষায় একটি ডেরিফারেন্স অপারেটর হিসাবে ব্যবহৃত হচ্ছে - যখন কোনও কাঠামোর ক্ষেত্রে ক্ষেত্রগুলি অ্যাক্সেস করার সময়:struct_pointer->field
এটি সংক্ষিপ্ত(*struct_pointer).field
।