মাপ_টি বনাম


246

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

void *v = malloc(10);
size_t s = (size_t) v;

সুতরাং C99 এ, স্ট্যান্ডার্ডটি প্রকারগুলি intptr_tএবং uintptr_tপ্রকারগুলি প্রবর্তন করে , যা স্বাক্ষরিত এবং স্বাক্ষরযুক্ত প্রকারগুলি পয়েন্টারগুলি ধরে রাখতে সক্ষম হওয়ার গ্যারান্টিযুক্ত:

uintptr_t p = (size_t) v;

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

একই টোকেন ptrdiff_tদ্বারা, একটি স্বাক্ষরিত টাইপ পয়েন্টার পার্থক্য ধরে রাখতে সক্ষম হয়েছে, এবং তাই কোনও কোনও পয়েন্টার ধরে রাখতে সক্ষম, সুতরাং এটি কীভাবে পৃথক intptr_t?

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

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

উত্তর:


236

size_tএমন একটি ধরন যা কোনও অ্যারে সূচক ধরে রাখতে পারে। এর অর্থ হ'ল, যৌক্তিকভাবে, আকার_t কোনও পয়েন্টার টাইপ ধরে রাখতে সক্ষম হওয়া উচিত

অগত্যা! উদাহরণস্বরূপ খণ্ডিত 16-বিট আর্কিটেকচারের দিনগুলিতে ফিরে আসা: উদাহরণস্বরূপ: একটি অ্যারে একক বিভাগে সীমাবদ্ধ থাকতে পারে (সুতরাং একটি 16-বিট size_tকরবে) তবে আপনার একাধিক বিভাগ থাকতে পারে (সুতরাং 32-বিট intptr_tটাইপটি বেছে নিতে হবে বিভাগটি পাশাপাশি এর মধ্যে অফসেট)। আমি জানি যে এইসব দিনগুলিতে অবিস্মরণীয়ভাবে সম্বোধনযোগ্য অমীমাংসিত আর্কিটেকচারের সময়গুলিতে অদ্ভুত লাগছে, তবে "2009 এ কি সাধারণ" এর চেয়েও বিস্তৃত বিভিন্ন জাতের জন্য মানক আবশ্যক, আপনি জানেন! -)


6
এটি একই সাথে উপসংহারে উপনীত অসংখ্য অন্যান্যদের সাথে এবং এর মধ্যে পার্থক্যটি ব্যাখ্যা করে size_tএবং uintptr_tতবে কী ptrdiff_tএবং intptr_t- এই দু'টিই কি কোনও প্ল্যাটফর্মে একই পরিসরের মানগুলি সংরক্ষণ করতে সক্ষম হবে না? কেন উভয় স্বাক্ষরযুক্ত এবং স্বাক্ষরবিহীন পয়েন্টার আকারের পূর্ণসংখ্যার ধরণের, বিশেষত যদি ptrdiff_tইতিমধ্যে স্বাক্ষরিত পয়েন্টার-আকারের পূর্ণসংখ্যার প্রকারের উদ্দেশ্যে পরিপূর্ণ হয়।
ক্রিস লুটজ

8
@ ক্রিসের মূল বাক্যাংশটি " প্রায় কোনও প্ল্যাটফর্মে" রয়েছে। একটি বাস্তবায়ন 0xf000-0xffff সীমার পয়েন্টারগুলিকে সীমাবদ্ধ করতে বিনামূল্যে - এটির জন্য 16 বিট ইন্টিপ্রেট_ টি প্রয়োজন তবে কেবল 12/13-বিট পিটিআরডিফ_টি দরকার।
paxdiablo

29
@ ক্রিস, কেবল একই অ্যারের ভিতরে পয়েন্টারগুলির জন্য তাদের পার্থক্যটি গ্রহণ করা ভাল-সংজ্ঞায়িত। সুতরাং, ঠিক একই বিভাগযুক্ত 16-বিট আর্কিটেকচারে (অ্যারে অবশ্যই একক বিভাগের মধ্যে থাকতে পারে তবে দুটি পৃথক অ্যারে বিভিন্ন বিভাগে থাকতে পারে) পয়েন্টারগুলি অবশ্যই 4 বাইট হতে পারে তবে পয়েন্টার পার্থক্য 2 বাইট হতে পারে!
অ্যালেক্স মার্টেলি

6
@ অ্যালেক্সমার্টেলি: পয়েন্টার পার্থক্য বাদে ইতিবাচক বা নেতিবাচক হতে পারে। স্ট্যান্ডার্ডটি size_tকমপক্ষে 16 বিট হওয়া দরকার, তবে ptrdiff_tকমপক্ষে 17 বিট হতে হবে (যার ব্যবহারে এটি সম্ভবত কমপক্ষে 32 বিট হবে)।
কিথ থম্পসন

3
বিভাগবিহীন আর্কিটেকচারগুলি কখনই মনে রাখবেন না, x86-64 এর মতো আধুনিক স্থাপত্য সম্পর্কে কী বলা যায়? এই আর্কিটেকচারের প্রাথমিক প্রয়োগগুলি কেবল আপনাকে 48-বিট সম্বোধনযোগ্য স্থান দেয় তবে পয়েন্টারগুলি নিজেরাই একটি 64-বিট ডেটা টাইপ। মেমরির বৃহত্তম সংলগ্ন ব্লকটি আপনি যুক্তিযুক্তভাবে সম্বোধন করতে পারবেন 48-বিট, সুতরাং আমার কল্পনা SIZE_MAXকরতে হবে 2 ** 64 হওয়া উচিত নয়। এটি ফ্ল্যাট ঠিকানা ব্যবহার করছে, মনে রেখো; কোনও SIZE_MAXডেটা পয়েন্টারের সীমার মধ্যে কোনও মিল নেই বলে কোনও বিভাজন প্রয়োজন ।
অ্যান্ডন এম। কোলেম্যান

89

আপনার বক্তব্য সম্পর্কে:

"সি স্ট্যান্ডার্ড গ্যারান্টি দেয় যে এটি size_tএমন এক ধরণের যা কোনও অ্যারে সূচক ধরে রাখতে পারে This এর অর্থ হল, যৌক্তিকভাবে size_tকোনও পয়েন্টার টাইপ ধরে রাখতে সক্ষম হওয়া উচিত।"

এটি আসলে একটি ভ্রান্তি (ভুল যুক্তির ফলস্বরূপ একটি ভুল ধারণা) (ক) । আপনি ভাবতে পারেন যে পূর্ববর্তীটি পূর্বের থেকে অনুসরণ করে তবে বাস্তবে এটি হয় না।

পয়েন্টার এবং অ্যারে ইনডেক্স হয় না একই জিনিস। এটি এমন একটি বাস্তবায়ন কল্পনা করা যথেষ্ট প্রশংসনীয় যা অ্যারেগুলিকে 65536 উপাদানগুলিতে সীমাবদ্ধ করে কিন্তু পয়েন্টারগুলিকে কোনও মান 128-বিট ঠিকানা জায়গাতে সম্বোধন করতে দেয়।

সি 99 বলেছে যে কোনও size_tভেরিয়েবলের উপরের সীমাটি সংজ্ঞায়িত করা হয় SIZE_MAXএবং এটি 65535 এর মতো কম হতে পারে (সি 99 তে অপরিবর্তিত C99 টিআর 3 দেখুন, 7.18.3)। পয়েন্টারগুলি যদি আধুনিক সিস্টেমে এই সীমার মধ্যে সীমাবদ্ধ থাকে তবে মোটামুটি সীমাবদ্ধ থাকবে।

অনুশীলনে, আপনি সম্ভবত দেখতে পাবেন যে আপনার অনুমানটি ধারণ করেছে তবে মানক এটির গ্যারান্টি দেয় বলে তা নয়। কারণ এটি আসলে এটির গ্যারান্টি দেয় না।


(ক) এটি ব্যক্তিগতভাবে আক্রমণাত্মক কোনও রূপ নয় , কেবলমাত্র উল্লেখ করে যে কেন আপনার বক্তব্য সমালোচনামূলক চিন্তার প্রসঙ্গে ভ্রান্ত। উদাহরণস্বরূপ, নিম্নলিখিত যুক্তিটিও অবৈধ:

সব কুকুরছানা সুন্দর। এই জিনিস সুন্দর। সুতরাং এই জিনিসটি একটি কুকুরছানা হতে হবে।

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

এটি আপনার প্রথম বিবৃতিতে অনুরূপ, দ্বিতীয়টি বাধ্যতামূলকভাবে আবশ্যক নয়।


অ্যালেক্স মার্তেলির মন্তব্যে আমি যা বলেছিলাম তা পুনরায় টাইপ করার পরিবর্তে, আমি কেবল স্পষ্টির জন্য ধন্যবাদ জানাব, তবে আমার প্রশ্নের দ্বিতীয়ার্ধটি ( ptrdiff_tবনাম intptr_tঅংশ) পুনরায় বলব ।
ক্রিস লুটজ

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

1
@ আইভান_পোজদেদেভ - এটি একটি দুর্বল এবং কঠোর সম্পাদনা এবং এটিকে আমি কোনও প্রমাণ দেখতে পাচ্ছি না যে প্যাক্সিডিয়াবলো কারও কাছে "মজা করছে"। আমি যদি ওপি থাকতাম তবে আমি এই
প্রাক্তন নিহিলো

1
@ ইভান, আপনি প্রস্তাবিত সম্পাদনাগুলিতে সত্যই সন্তুষ্ট নন, ফিরে এসেছিলেন এবং কোনও অনিচ্ছাকৃত অপরাধ অপসারণের চেষ্টা করেছিলেন। যদি আপনার প্রস্তাবিত অন্য কোনও পরিবর্তন থেকে থাকে তবে আমি চ্যাট শুরু করার পরামর্শ দেব যাতে আমরা আলোচনা করতে পারি।
paxdiablo

1
@ পাক্সাদিয়াবলো ঠিক আছে, আমার ধারণা "এটি আসলে একটি ভ্রান্তি" কম পৃষ্ঠপোষকতা করছে।
ivan_pozdeev

36

আমি অন্যান্য সমস্ত উত্তর সেগমেন্ট সীমাবদ্ধতা, বহিরাগত আর্কিটেকচার, এবং এর সাথে যুক্তি সম্পর্কিত নিজের পক্ষে দাঁড়াতে দেব।

নামগুলির সাধারণ পার্থক্য কি সঠিক জিনিসের জন্য যথাযথ প্রকারটি ব্যবহার করার পক্ষে যথেষ্ট নয়?

আপনি যদি কোনও আকার সঞ্চয় করেন তবে ব্যবহার করুন size_t। আপনি যদি কোনও পয়েন্টার সংরক্ষণ করেন তবে ব্যবহার করুন intptr_t। আপনার কোডটি পড়ছেন এমন একজন ব্যক্তি তাত্ক্ষণিকভাবে জানতে পারবেন যে "আহা, এটি কোনও কিছুর আকার, সম্ভবত বাইটে" এবং "ওহ, এখানে কোনও কারণের জন্য একটি পয়েন্টার মানটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হচ্ছে"।

অন্যথায়, আপনি unsigned longপ্রতিটি unsigned long longকিছুর জন্য কেবল (বা এগুলিতে এখানে আধুনিক সময়ে ) ব্যবহার করতে পারেন। আকার সবকিছু নয়, টাইপ নামগুলি বোঝায় যার অর্থ এটি কার্যকর কারণ এটি প্রোগ্রামটি বর্ণনা করতে সহায়তা করে।


আমি সম্মত, তবে আমি একটি হ্যাক / ট্রিকের কিছু বিবেচনা করছিলাম (যা আমি অবশ্যই স্পষ্টভাবে নথি করব) একটি size_tক্ষেত্রের মধ্যে পয়েন্টার ধরণের সংরক্ষণের সাথে জড়িত ।
ক্রিস লুটজ

@ মার্কএডলার স্ট্যান্ডার্ডকে পয়েন্টারগুলি পুরোপুরি পূর্ণসংখ্যার হিসাবে উপস্থাপিত হওয়ার প্রয়োজন হয় না: যে কোনও পয়েন্টার টাইপটি একটি পূর্ণসংখ্যার ধরণের রূপান্তরিত হতে পারে। পূর্বনির্ধারিত ব্যতীত ফলাফলটি বাস্তবায়ন-সংজ্ঞায়িত। যদি ফলাফলটি পূর্ণসংখ্যার ধরণে প্রতিনিধিত্ব করা না যায় তবে আচরণটি সংজ্ঞায়িত। ফলাফলটি কোনও পূর্ণসংখ্যার ধরণের মানের সীমার মধ্যে থাকা উচিত নয়। সুতরাং, শুধুমাত্র void*, intptr_tএবং uintptr_tডেটা কোনো পয়েন্টার প্রতিনিধিত্ব করতে সক্ষম হতে নিশ্চিত করা হয়।
অ্যান্ড্রু সুইটলিচনি

12

এটি সম্ভব যে বৃহত্তম অ্যারের আকার একটি পয়েন্টারের চেয়ে ছোট। বিভাগযুক্ত আর্কিটেকচারের কথা চিন্তা করুন - পয়েন্টারগুলি 32-বিট হতে পারে তবে একটি একক বিভাগ কেবলমাত্র 64KB (যেমন পুরানো রিয়েল-মোড 8086 আর্কিটেকচার) সম্বোধন করতে সক্ষম হতে পারে।

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


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

ইনডেক্সিং পয়েন্টারগুলি কেবল বিন্যস্ত করা অ্যারের আকারে প্রযুক্তিগতভাবে সমর্থিত হয় - সুতরাং যদি একটি অ্যারে যদি 64 কেবি আকারের মধ্যে সীমাবদ্ধ থাকে তবে কেবলমাত্র পয়েন্টার পাটিগণিতকেই সমর্থন করতে হবে। যাইহোক, এমএস-ডস সংকলকগুলি একটি 'বিশাল' মেমরি মডেলকে সমর্থন করেছিল, যেখানে দূরবর্তী পয়েন্টারগুলি (32-বিট সেগমেন্টযুক্ত পয়েন্টার) ম্যানিপুলেটেড ছিল যাতে তারা পুরো মেমরিটিকে একক অ্যারে হিসাবে সম্বোধন করতে পারে - তবে পর্দার পিছনে নির্দেশকারীগুলিতে সম্পন্ন পাটিগণিত ছিল বেশ কুৎসিত - যখন অফসেটটি 16 (বা কিছু) এর মান ছাড়িয়ে বৃদ্ধি পেয়েছিল, তখন অফসেটটি 0 এ গুটিয়ে রাখা হত এবং সেগমেন্টের অংশটি বাড়ানো হয়েছিল।
মাইকেল বুড় 6

7
En.wikedia.org/wiki/C_mmory_model# স্মৃতি_সংশ্লিষ্টতা পড়ুন এবং মারা গেছেন এমন এমএস-ডস প্রোগ্রামারদের জন্য কেঁদে ফেলুন যাতে আমরা মুক্ত হতে পারি।
জাস্টিকাল

সবচেয়ে খারাপটি ছিল যে stdlib ফাংশনটি বিশাল কিওয়ার্ডটির যত্ন নেয়নি। সব জন্য 16bit মাইক্রোসফট-সি strকার্যকারিতা ও Borland এমনকি memফাংশন ( memset, memcpy, memmove)। এর অর্থ আপনি যখন অফসেটটি উপচে পড়লেন তখন আপনি মেমরির কিছু অংশ ওভাররাইট করতে পারেন, যা আমাদের এমবেডেড প্ল্যাটফর্মটিতে ডিবাগ করার জন্য মজা ছিল।
প্যাট্রিক Schlüter

@ জাস্টিকাল: ৮০8686 বিভক্ত আর্কিটেকচার সি তে ভাল সমর্থনযোগ্য নয়, তবে আমি জানি যে অন্য কোনও আর্কিটেকচারের ক্ষেত্রে এটি আরও দক্ষ যে ক্ষেত্রে 1 এমবি ঠিকানার জায়গার পরিমাণ যথেষ্ট তবে একটি 64 কেও হবে না। কিছু আধুনিক জেভিএম প্রকৃতপক্ষে x86 রিয়েল মোডের মতো ঠিকানার ঠিকানা ব্যবহার করে 32-বিট অবজেক্ট রেফারেন্সগুলি 32 জিবি ঠিকানা স্থানে অবজেক্ট বেস ঠিকানাগুলি তৈরি করতে 3 বিট রেখে যায় using
সুপারক্যাট

5

আমি কল্পনা করব (এবং এটি সব ধরণের নামের জন্য যায়) এটি কোডে আপনার উদ্দেশ্যগুলি আরও ভালভাবে জানায়।

উদাহরণস্বরূপ, যদিও unsigned shortএবং wchar_tএটি উইন্ডোজে একই আকারের (আমার মনে হয়) wchar_tপরিবর্তে ব্যবহার করার unsigned shortউদ্দেশ্যটি দেখায় যে আপনি এটি কেবল কয়েকটি স্বেচ্ছাসেবী সংখ্যার চেয়ে বিস্তৃত অক্ষর সংরক্ষণ করতে ব্যবহার করবেন।


তবে এখানে একটি পার্থক্য রয়েছে - আমার সিস্টেমে wchar_tএটির চেয়ে অনেক বড় অন্যটির জন্য একটি unsigned shortব্যবহার করা ভ্রান্ত হবে এবং একটি গুরুতর (এবং আধুনিক) বহনযোগ্যতা উদ্বেগ তৈরি করবে, যেখানে বহনযোগ্য অঞ্চলের মধ্যে বহনযোগ্যতার উদ্বেগ রয়েছে size_tএবং uintptr_tমনে হয় ১৯৮০-এর কিছু (তারিখের অন্ধকারে এলোমেলো ছুরিকা)
ক্রিস লুটজ

Touche! কিন্তু তারপরে আবার, size_tএবং uintptr_tএখনও তাদের নামে ব্যবহারগুলিকে অন্তর্ভুক্ত করেছে।
ড্রিমলাক্স

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

3

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

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

তবে এমনকি এলপি 64৪, একটি সাধারণ উদাহরণ, সিস্টেম কল ইন্টারফেসের জন্য আমাদের সাইজ_টি এবং সাইজ_ট প্রয়োজন। যে কেউ আরও সীমাবদ্ধ লিগ্যাসি বা ভবিষ্যতের ব্যবস্থা কল্পনা করতে পারে, যেখানে পূর্ণ 64৪-বিট প্রকারের ব্যবহার ব্যয়বহুল এবং তারা 4 গিগাবাইটের চেয়ে বড় আই / ওপিসে পন্ট করতে চায় তবে এখনও 64৪-বিট পয়েন্টার থাকতে পারে।

আমার মনে হয় আপনার অবাক হতে হবে: কী বিকাশিত হতে পারে, ভবিষ্যতে কী আসতে পারে। (সম্ভবত 128-বিট বিতরণ-সিস্টেম ইন্টারনেট-প্রশস্ত পয়েন্টার, তবে একটি সিস্টেম কলে 64৪ বিটের বেশি নয়, এমনকি একটি "লিগ্যাসি" 32-বিট সীমাও রয়েছে: :-) চিত্র যে লিগ্যাসি সিস্টেমগুলি নতুন সি সংকলক পেতে পারে .. ।

এছাড়াও, তারপরে কী ছিল তাও দেখুন। জিলিয়ন 286 রিয়েল-মোড মেমরির মডেলগুলি ছাড়াও, সিডিসি 60-বিট শব্দ / 18-বিট পয়েন্টার মেইনফ্রেমগুলি সম্পর্কে কীভাবে? ক্রে সিরিজটি কেমন? সাধারণ আইএলপি 64৪, এলপি 64৪, এলএলপি mind (আমি সবসময়ই ভেবেছিলাম মাইক্রোসফ্ট এলএলপি with৪ নিয়ে ভদ্র was


-9
int main(){
  int a[4]={0,1,5,3};
  int a0 = a[0];
  int a1 = *(a+1);
  int a2 = *(2+a);
  int a3 = 3[a];
  return a2;
}

এই ইন্টিপ্রেট_টাকে বোঝাতে সর্বদা সাইজ_ট এবং ভিসার বিপরীতে থাকতে হবে।


10
এই সমস্ত শোটি সি এর একটি নির্দিষ্ট বাক্য গঠন যা অ্যারে ইনডেক্সিংকে x [y] * (x + y) এর সমতুল্য হিসাবে নির্ধারণ করা হয়েছে, এবং কারণ একটি + 3 এবং 3 + a টাইপ এবং মান হিসাবে একরকম, আপনি পারেন 3 [a] বা একটি [3] ব্যবহার করুন।
ফ্রেড নুরক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.