c - Passing array (member of a struct) to function -


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

  • 3 जवाब

मैं पास करने का प्रयास कर रहा हूं, संदर्भ के अनुसार, एक समारोह में वर्णों की 1-डी सरणी। यहां प्रासंगिक कोड है:

  शून्य फ़ंक्शन 1 (); शून्य फ़ंक्शन 2 (संरचना टेम्पलेट *); संरचना टेम्पलेट {चार सरणी [11]; }; Function1 () {struct टेम्पलेट myStruct = {0}; // समारोह 2 आरंभ (& amp; myStruct); } फ़ंक्शन 2 (स्ट्रक्चर टेम्पलेट * myStruct) {शून्य लिखतअरेरे (चार सरणी [11]); // स्थानीय रूप से एक फ़ंक्शन लिखने की घोषणा कर रहा हैतोअरे (myStruct- & gt; सरणी); } शून्य लिखतअरेरे (चार सरणी [11]) {/ *** सामान ****}}  

अब, जब इस कोड को डीबग करना, मुझे एक अप्रत्याशित परिणाम मिलता है। एक बार मैंने लिखने के लिए प्रवेश किया है (), मैं कॉल

  p sizeof (array)  

जो रिटर्न 4. क्या 11 का मूल्य वापस नहीं किया जाना चाहिए?

मुझे पता है कि सभी चर के लिए "sizeof" संकलित समय पर संकलित किया जाता है। तो कंपाइलर लिखने के लिए "चार सरणी [11]" को लिखने के लिए क्यों है?

जब आप कोई फंक्शन में एक तर्क के रूप में एक सरणी पास करते हैं, तो सरणी का आरंभिक पता पारित होता है कार्यक्रम। यहां संदर्भ एक निर्दिष्ट मेमोरी स्थान है और यह आपके मेजबान सिस्टम पर 4 बाइट्स मेमोरी रखता है।


Comments

Popular posts from this blog

c# - Reactive Extensions ControlScheduler -

multithreading - Reorderings in java memory model -

java - Add color code support to a Bukkit plugin -