मैं कुछ कोड मैं निम्नलिखित चर घोषणा के साथ mantaining कर रहा हूँ मिल गया है:पासिंग सी सरणी
char tmpry[40];
यह इस समारोह के साथ प्रयोग किया जा रहा है:
char *SomeFunction(char *tmpryP) {
// Do stuff.
}
समारोह कॉल है:
SomeFunction(&tmpry[0]);
मैं बहुत लानत सुनिश्चित करें कि सिर्फ एक ही है के रूप में कर रहा हूँ:
+०१२३५१६४१०६SomeFunction(tmpry);
मैंने यह भी जांच की है कि कुछ फ़ंक्शन में char * पॉइंटर दोनों मामलों में सरणी के समान स्मृति स्थान को इंगित करता है।
मेरा प्रश्न एक स्वच्छता जांच है कि क्या दो फ़ंक्शन कॉल समान हैं (और इसलिए मूल प्रोग्रामर केवल बुरा था)?
मुझे लगता है कि यह SomeFunction को भी लंबाई पारित करने के लिए अच्छा होगा पर C Programming FAQ अनुभाग, बस मामले में ... :) –
सरणी के पहले तत्व के पते के लिए वर्ण सरणी का नाम उपनाम है। – David
हैलो, मैं उन "बुरा" प्रोग्रामर में से एक हूं जो इस तरह लिखते हैं। आम तौर पर, मैं इस समय उपयोग किए गए सरणी अमूर्तता को कम युग्मन के कारण सी ++ कोड में करता हूं। अर्थात। एक * अमूर्त * सरणी जैसी डेटा संरचना के लिए (जैसे 'std :: vector ') ओवरलोडेड' ऑपरेटर [] 'एक्सप्रेशन' x' और' & x [0] 'के साथ बहुत अलग चीजों का अर्थ होगा, और * दूसरा * एक वह है जो मेरे इरादे के लिए बेहतर फिट बैठता है। बेशक, यह सब सादा सी के लिए इतना मायने रखता नहीं है, क्योंकि आपको किसी भी तरह से सी में कोई डेटा अबास्ट्रक्शन नहीं मिलता है; इस प्रकार बेहतर पठनीयता के साथ वर्तनी को प्राथमिकता दी जानी चाहिए। –
ulidtko