2013-03-07 7 views
5

मुझे पता है क्याफ़ंक्शन परिभाषा में पॉइंटर बनाम ऐरे: शून्य fct1 (int * p) और शून्य fct1 (int p []) के बीच क्या अंतर है?

void fct1(int *p) 

और

void fct1(int p[]) 

के बीच का अंतर मुझे पता है कि दोनों संकेत दिए गए हैं लेकिन यदि कोई अंतर है है चाहता हूँ

+1

@ मार्क रांसम त्वरित उत्तर के लिए धन्यवाद। लेकिन मैंने सुना है कि int p [] एक निरंतर सूचक है, इसलिए जिस पते को इंगित किया जा सकता है वह सच नहीं है? – user2142328

+0

("फ़ंक्शन पॉइंटर्स" फ़ंक्शंस के लिए पॉइंटर्स हैं, फ़ंक्शन नहीं लेते हैं। यह कहा जा रहा है कि, मुझे यकीन है कि यह * एक डुप्लिकेट होना चाहिए।) –

+1

@ user2142328 'p []' आकार की सरणी घोषित करता है बाद में निर्धारित किया जाना चाहिए। यह एक फ़ंक्शन पैरामीटर में अवैध होगा, जिसका आकार तुरंत जाना चाहिए। इसलिए इस संदर्भ में इसका विशेष रूप से इलाज किया जाता है, '* पी' में तत्काल परिवर्तन प्राप्त करना। – Potatoswatter

उत्तर

8

इसमें कोई अंतर जब एक समारोह के रूप में प्रयोग किया जाता है उस तरह पैरामीटर। कंपाइलर दोनों रूपों को समान रूप से मानता है।

2

कोई फर्क नहीं पड़ता। पूर्णता के लिए, यहाँ क्या मानक का कहना है:

C99 मानक 6.7.5.3 खंड 7

के रूप में '' प्रकार की सरणी 'एक पैरामीटर का एक घोषणा' '' योग्य सूचक को समायोजित किया जाएगा टाइप '', ...

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