हाल ही में मैं कुछ सी कोड की समीक्षा की और कुछ निम्नलिखित के बराबर पाया:Struct
struct foo {
int some_innocent_variables;
double some_big_array[VERY_LARGE_NUMBER];
}
लगभग होने के नाते, लेकिन काफी नहीं, लगभग पूरी तरह से सी में एक नौसिखिया, मैं सोच में सही हूँ कि सरणी सदस्य की वजह से यह संरचना अंतरिक्ष के उपयोग में बहुत अक्षम है? क्या होता है जब यह संरचना फ़ंक्शन के लिए तर्क के रूप में पारित हो जाती है? क्या यह पूरी सरणी में ढेर पर पूरी तरह से कॉपी किया गया है?
क्या अधिकांश मामलों में double *some_pointer
इसके बजाय बेहतर होगा?
अंतरिक्ष के उपयोग में अक्षमता इस बात पर निर्भर करती है कि आप आवंटित स्थान का उपयोग करते हैं या नहीं। यदि पूरी सरणी हमेशा प्रयोग की जाती है तो एक सूचक वास्तव में पॉइंटर को स्टोर करने के लिए बर्बाद जगह के कुछ बाइट जोड़ देगा (भले ही बड़े सरणी के लिए नगण्य हो)। – altendky