c++ - Why was the array type of formal parameter of a function converted to pointer? -


निम्न फ़ंक्शन का आउटपुट "int *" है, जिसका अर्थ है औपचारिक पैरामीटर को पूर्णांक सूचक में कनवर्ट किया गया है। क्या इस डिजाइन के लिए कोई आवश्यक कारण है? हम सरणी प्रकार को क्यों आरक्षित नहीं कर सकते?

  // आउटपुट "int *" # शामिल है & lt; typeinfo & gt; Void Func (int ar [5]) {printf ("% s \ n", typeid (ar) .name ()}} int main () {int ar [5]; फ़नक (एआर); वापसी 0;} <    

क्या इस डिजाइन के लिए कोई आवश्यक कारण है?

यह सी से ऐतिहासिक सामान है। माना जाता है यह सुविधा थी क्योंकि आप किसी भी तरह से एआरए-मान नहीं दे सकते।

यदि आप प्रकार को संरक्षित करना चाहते हैं, आप एक संदर्भ या पॉइंटर्स का उपयोग कर सकते हैं:

  शून्य फ़ंक्शन (इंट (और एआर) [5]);  

मनमाने ढंग से आकार की सरणी:

  टेम्पलेट & lt; std :: size_t N & gt; शून्य फ़ंक्शन (इंट (एंड एआर) [एन]);  

Comments