पर पारित होने पर सरणी का आकार निर्धारित करता है यदि यह किसी अन्य फ़ंक्शन (आकार पास नहीं हुआ है) को सरणी के आकार को निर्धारित करना संभव है? सरणी को int सरणी [] = {XXX} की तरह शुरू किया गया है ..फ़ंक्शन
मैं समझता हूं कि यह आकार नहीं करना संभव है क्योंकि यह सूचक के आकार को वापस कर देगा .. कारण मैं पूछता हूं क्योंकि मुझे एक चलाने की आवश्यकता है अन्य फ़ंक्शन के अंदर लूप जहां सरणी पास हो जाती है। मैं कुछ ऐसा करने की कोशिश की:
for(int i = 0; array[i] != NULL; i++) {
........
}
लेकिन .. मैंने देखा है कि सरणी के पास अंत में, सरणी [i] कभी कभी कचरा मूल्यों 758,433 की तरह होते हैं जो सरणी के प्रारंभ में निर्दिष्ट एक मूल्य नहीं है
+1 यह कुछ हद तक एक समाधान है, लेकिन प्रत्येक अलग सरणी आकार के लिए एक अलग func() प्रतीक बना देगा। यही है, अलग-अलग स्थानों में पास किए गए सरणी के अलग-अलग आकार होते हैं, फ़ंक्शन को कई बार तुरंत चालू किया जाएगा। यह उपयोगी हो सकता है हालांकि किसी अन्य फ़ंक्शन में किसी कॉल में सरणी के आकार को सम्मिलित करने के लिए जिसमें वास्तविक कार्यान्वयन होता है और आकार प्राप्त होता है, शायद इसे इनलाइन के रूप में फ़्लैग किया जाता है (नहीं कि संकलक को आपके नियम का पालन करना चाहिए ...) टेम्पलेट इनलाइन शून्य रैपर (टी (और ए) [एन]) {वापसी func (ए, एन); } - func() असली समारोह होने के साथ। –
निश्चित रूप से, लक्ष्य उस कार्य को बनाना होगा जो उस पर चल रहा है इतना छोटा है कि इसे रेखांकित करने की संभावना है। मुझे आपके रैपर विचार भी पसंद हैं। –