कार्य करने के लिए करने के लिए स्थिरांक कीवर्ड को जोड़ने का है वहाँ किसी भी तरह से है कि मैं एक सरणी समारोह के लिए एक पैरामीटर के रूप में पारित करने के लिए const
कीवर्ड जोड़ सकते हैं:एक सरणी एक पैरामीटर के रूप में पारित
void foo(char arr_arg[])
अगर मैं const
char
से पहले जगह (void foo(const char arr_arg[])
) या char
(void foo(char const arr_arg[])
) के बाद, इसका मतलब char
से अधिक होगा जो arr_arg
नहीं है।
मुझे लगता है कि हुड के नीचे कार्य करने के लिए एक पैरामीटर के रूप में भेजा एक सरणी सूचक के रूप में प्रस्तुत किया जाता है तो बस read है, तो void foo(char arr_arg[])
void foo(char* ptr_arg)
के समान है। इसे ध्यान में रखते हुए, मैं इस कार्य को void foo(char * const ptr_arg)
के रूप में फिर से लिख सकता हूं क्योंकि यह वही होना चाहिए जो मैं प्राप्त करना चाहता हूं।
लेकिन मैं अगर वहाँ इस घोषणा void foo(char arr_arg[])
में const
कीवर्ड जोड़ने के लिए यह रूप में एक ही होने के लिए एक तरीका है जानना चाहता हूँ void foo(char * const ptr_arg)
(और void foo(char const * ptr_arg)
या void foo(const char * ptr_arg)
नहीं)?
मैं सिर्फ यह समझना चाहता हूं कि arr_arg
को सरणी नोटेशन []
के साथ स्थिर बनाने के लिए कोई वाक्यविन्यास है या नहीं।
कोई विशेष कारण आप 'शून्य foo (चार * स्थिरांक ptr_arg)' ऐसा करने के लिए नहीं करना चाहती है? यह हर जगह बिल्कुल वही वाक्यविन्यास है। आप अभी भी ptr_arg [0] कर सकते हैं जैसे कि इसे सरणी के रूप में घोषित किया गया हो। –
@ हंस मैं सिर्फ यह समझना चाहता हूं कि यह सरणी नोटेशन के साथ इसे करने के लिए वाक्य रचनात्मक रूप से संभव है या नहीं। [] '। कोई विशिष्ट कारण नहीं है। बस यह स्पष्ट करना चाहते हैं कि यह संभव है या नहीं (केवल भविष्य में जानना और समय पर बर्बाद न करें अगर यह संभव है या बार-बार नहीं)। – ovgolovin
मुझे नहीं लगता कि पॉइंटर को स्वयं को कॉन्स्ट के रूप में घोषित करने की आवश्यकता है क्योंकि इसे वैसे भी मूल्य से पारित किया जाएगा। केवल तभी जब आप स्पष्ट रूप से फ़ंक्शन परिभाषा के अंदर असाइन करने (स्टैक पर पॉइंटर की प्रति) से रक्षा करना चाहते हैं। –