क्या दोनों पॉइंटर स्टेटमेंट समान हैं?फ़ंक्शन में पॉइंटर सिंटैक्स घोषित करना
void reverse(const char * const sPtr){
}
और
void reverse(const char const *sPtr){
}
क्या दोनों पॉइंटर स्टेटमेंट समान हैं?फ़ंक्शन में पॉइंटर सिंटैक्स घोषित करना
void reverse(const char * const sPtr){
}
और
void reverse(const char const *sPtr){
}
सं
const char const *sPtr
const char *sPtr
के बराबर है।
const char *sPtr
पैरामीटर sPtr
const char
पर एक सूचक है।
const char * const sPtr
पॉइंटर const char
पर है।
ध्यान दें कि यह C99 और सी 11 में बराबर है:
(C99, 6.7.3p4) "एक ही क्वालीफायर एक ही विनिर्देशक-क्वालीफायर-सूची में एक से अधिक बार दिखाई देता है, या तो सीधे या एक के माध्यम से या अधिक typedefs, व्यवहार वही है जैसे यह केवल एक बार दिखाई दिया। "
लेकिन C89 जहां const char const *sPtr
एक बाधा उल्लंघन है में नहीं:
(C90, 6.5.3) "एक ही प्रकार के क्वालीफायर एक ही विनिर्देशक सूची या क्वालीफायर सूची में एक से अधिक बार दिखाई नहीं होगा, या तो सीधे या एक या अधिक टाइपपीफ के माध्यम से। "
ठीक है। धन्यवाद। यह समझ आता है। – runners3431
सं
पहले const char
करने के लिए एक const
सूचक है।
दूसरा const char
पर पॉइंटर है।
const
बाएं बाएं, या दाएं बाईं ओर कुछ भी नहीं है।
उस बोली के लिए धन्यवाद। – runners3431
आप क्या हासिल करने की कोशिश कर रहे हैं?
आप एक स्थिरांक सूचक चाहते हैं तो आप *
int * const a;
के बाद const
डाल करने के लिए आप एक सूचक चाहते हैं const के लिए है इससे पहले कि आप *
const int *a;
स्ट्रिंग लेने के लिए जा रहे हैं और इसे printf कथन के साथ उलट दें। – runners3431
आप चाहते हो सकता है
const
डाल करने के लिए है कुछ 'टाइपपीफ' का उपयोग करने के लिए। –@ डैन या नहीं। ऑब्जेक्ट पॉइंटर प्रकारों के लिए 'typedef' का उपयोग करना निराश है। – ouah
@ouah: जो इसे हतोत्साहित करता है, और आप किसी ऐसे व्यक्ति द्वारा निराश क्यों होंगे जो जाहिर है कि उसके बारे में कोई बात नहीं है? –