2010-04-05 15 views
6

स्थिर सरणी और गतिशील सरणी में तत्वों की संख्या को खोजने का सबसे तेज़ तरीका क्या है?स्थिर सरणी और गतिशील सरणी में तत्वों की संख्या

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/851716/count-repeated-elements-in-an-array-in -सी –

+1

संभावित डुप्लिकेट: http://stackoverflow.com/questions/2347766/how-many-elements-are-full-in-ac-array –

उत्तर

10

गतिशील रूप से बनाए गए सरणी में तत्वों की संख्या को खोजने का कोई तरीका नहीं है। एक गैर-गतिशील सरणी के लिए, आप sizeof(array)/sizeof(type) का उपयोग कर सकते हैं। हालांकि, इस के रूप में उपयोगी के रूप में ऐसा लगता है नहीं है:

void f(int a[]) { 
    // sizeof(a) will be the size of a pointer, probably 4 
} 

int main() { 
    int a[100]; 
    // sizeof(a)/sizeof(int) will be 100 
    f(a); 
} 

कार्यों के लिए इसका कारण यह है जब पारित कर दिया संकेत में सरणियों क्षय है। तो दोनों मामलों में, आपको शायद सरणी के आकार को याद रखना होगा और इसे एक अलग पैरामीटर के रूप में कार्य करने के लिए पास करना होगा। तो एक समारोह एक सरणी (उदाहरण के लिए) योग करने के लिए इस प्रकार दिखाई देगा:

int sum(int a[], int n) { 
    int total = 0, i;  
    for (i = 0; i < n; i++) { 
     total += a[i]; 
    } 
    return total; 
} 
+6

आम तौर पर 'sizeof (array)/sizeof (array [0] का उपयोग करेगा) '। इसके अतिरिक्त गतिशील सरणी में तत्वों की संख्या को खोजने के लिए गैर-मानक, गैर-पोर्टेबल तरीके हो सकते हैं, लेकिन आकार को अलग-अलग आकार में स्टोर करना सबसे अच्छा है और आकार को जानने की आवश्यकता वाले किसी भी चीज़ को पास करना सबसे अच्छा है। –

+0

@ डैन हां, वहां सोचने के बिना टाइपिंग - धन्यवाद। –

+1

@Georg कृपया मेरे उत्तरों की तकनीकी सामग्री संपादित न करें - मैंने कोड को लिखा है जिसे मैंने काफी सचेत रूप से पोस्ट किया है। यदि आपको लगता है कि इसे बेहतर किया जा सकता है, तो कोई टिप्पणी करें या अपना उत्तर पोस्ट करें। –

संबंधित मुद्दे