Wednesday 15 April 2015

c - differnt size is displayed when passed from main to a function -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 15 उत्तर
  • 9 उत्तर <पूर्व> #include & lt; stdio.h & gt; #include & lt; string.h & gt; इंट फैशन (इंट []); मुख्य () {int a [] = {3,2,5,1,3}; पूर्णांक आकार; आकार = आकार का आकार / आकार (int); Printf ("आकार% d \ n", sizeof (ए)); // सरणी printf का आकार ("int% d \ n" का आकार, आकार (int)); // int printf का आकार ("सर% की संख्या \ n", आकार); सरणी फैशन की वास्तविक लंबाई (ए); वापसी 0; } इंट फ़ैशन (इंट इनपुट 1 []) // इंट फ़ैशन के साथ प्रयास किया (इंट्रेट * इंप्ट 1) {इंट साइज़; आकार = इनपुट का आकार / आकार (int); Printf ("\ n फ़ंक्शन \ n"); Printf ("आकार% d \ n", sizeof (input1)); // सरणी printf का आकार ("int% d \ n" का आकार, आकार (int)); // int printf का आकार ("सर% की संख्या \ n", आकार);

    नीचे कोड का आउटलुक है:

      आउटपुट सरणी का आकार है, जो कि 20 आकार के इंट 4 लम्बाई का सरणी है 5 सरणी के फ़ंक्शन के आकार में सरणी 2 के अंतराल के 4 इंच के आकार का 2   

    मुख्य फ़ंक्शन और फ़ंक्शन दोनों कोड समान ही हैं, लेकिन परिणामस्वरूप परिणाम अलग-अलग होते हैं।

    क्यों मुख्य फ़ंक्शन में सरणी का आकार बदल जाता है, यह 20 है और फ़ंक्शन में यह 8 है?

    मैंने भी फ़ैशन (इंट इनपुट 1 []) के साथ कोशिश की, लेकिन इसके परिणामस्वरूप भी।

    इसे अलग-अलग टाइपिंग के साथ करना है sizeof एक कंपाइल ऑपरेटर है, एक रनटाइम फ़ंक्शन नहीं।

    a प्रकार int [5] है, जो सही ढंग से 5 * 4 = 20 के आकार की ओर जाता है।

    इनपुट 1 प्रकार का है int * जिसका आकार समान है एक शून्य * के रूप में। 32-बिट सिस्टम और 64-बिट सिस्टम पर 8 पर आकारफ (पूर्णांक) = आकार (शून्य *) सामान्यतया 4 है सामान्यतः जब कार्य करने के लिए सरणियों को गुजरते हुए आप पहले तत्व (आपके फ़ंक्शन के अनुसार) को पॉइंटर पास करते हैं और साथ ही अलग तर्क के रूप में सरणी की लंबाई गुजरते हैं।

    < / div>

No comments:

Post a Comment