প্রথম ঘোষণা কম্পাইলার যে বলে someArray
হয় অন্তত 100 উপাদান দীর্ঘ। এটি অপটিমাইজেশনের জন্য ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, এর অর্থ এটি someArray
কখনই নয় NULL
।
নোট করুন যে ফাংশনটিতে কল যখন এই প্রয়োজনীয়তাগুলি পূরণ করে না তখন সি স্ট্যান্ডার্ডকে নির্ণয়ের জন্য সংকলকটির প্রয়োজন হয় না (অর্থাত এটি নিঃশব্দ অপরিবর্তিত আচরণ)।
দ্বিতীয় ঘোষণাপত্রটি কেবল someArray
(কোনও someArray
উপাদান নয়!) কনস্ট হিসাবে ঘোষণা করে , আপনি লিখতে পারবেন না someArray=someOtherArray
। এটি পরামিতি ছিল যেমন একই char * const someArray
।
এই বাক্য গঠনটি কেবল []
একটি ফাংশন প্যারামিটার তালিকায় একটি অ্যারে ডিক্লেয়ারারের অভ্যন্তরের মধ্যে ব্যবহারযোগ্য us এটি অন্যান্য প্রসঙ্গে উপলব্ধি করতে পারে না।
উপরের দুটি ক্ষেত্রেই স্ট্যান্ডার্ড পাঠ্যটি অন্তর্ভুক্ত রয়েছে, C11 6.7.6.3/7 (সি 99 এ 6.7.5.3/7 ছিল):
যেমন '' টাইপ অ্যারে '' একটি প্যারামিটার ঘোষণাটি করতে '' 'টাইপ করতে যোগ্যতাসম্পন্ন পয়েন্টার', যেখানে টাইপ কোয়ালিফায়ার (যদি থাকে) সেই মধ্যে উল্লিখিত সমন্বয় করিতে হইবে [
এবং ]
অ্যারের টাইপ শিক্ষাদীক্ষা করুন। যদি মূলশব্দ স্ট্যাটিক এছাড়াও [
এবং ]
অ্যারের ধরণের ডাইরিভিউশনের মধ্যে উপস্থিত হয়, তবে ফাংশনটির প্রতিটি কলের জন্য, সংশ্লিষ্ট প্রকৃত যুক্তির মান কমপক্ষে যতগুলি উপাদান নির্দিষ্ট করে ঠিক তত পরিমাণে একটি অ্যারের প্রথম উপাদানটিতে অ্যাক্সেস সরবরাহ করবে আকার এক্সপ্রেশন।
int foo(struct bar [static 1]);
পরিবর্তে এটি ব্যবহার করার পক্ষে বিবেচনা করা উচিতint foo(struct bar *);
। (আমি জানি যে এই জাতীয় ফাংশন ফ্ল্যাগ করার জন্য জিসিসির একটি বিকল্প নন স্ট্যান্ডার্ড সিন্ট্যাক্স রয়েছে যাতে সংকলক সতর্কতা দিতে পারে ..)