char*
क्या है, बिल्कुल? क्या यह एक सूचक है? मैंने सोचा कि पॉइंटर्स पहचानकर्ता से पहले तारांकन था, प्रकार नहीं (जो जरूरी नहीं है) ...?`char *` क्या है?
उत्तर
यह char
पर एक सूचक है।
पॉइंटर घोषित करते समय, तारांकन प्रकार के बाद और पहचानकर्ता के समक्ष जाता है, व्हाइटस्पेस महत्वहीन होता है। ये सभी char
संकेत घोषित:
char *pointer1;
char* pointer2;
char * pointer3;
char*pointer4; // This is illegible, but legal!
चीजों को और भी अधिक भ्रमित करने के लिए, जब एक साथ कई चर घोषित करने, तारांकन केवल एक ही पहचानकर्ता (इसके दाईं ओर) लागू होता है। उदा .:
char* foo, bar; // foo is a pointer to a char, but bar is just a char
ऐसा नहीं है कि तारांकन पारंपरिक, तुरंत पहचानकर्ता और न प्रकार के निकट रख दिया गया है के रूप में यह इस भ्रामक घोषणा से बचा जाता है इस कारण के लिए मुख्य रूप से है।
फिर, यह क्यों है कि एक पंक्ति पर एकाधिक पॉइंटर्स घोषित करते समय आपको प्रत्येक के लिए तारांकन का उपयोग करना होगा? उदाहरण के लिए, 'char * सूचक 1, * सूचक 2; '। – Maxpm
@ मैक्सपैम: हे, यह जोड़ने के लिए संपादन कर रहा था जैसा आपने टिप्पणी की थी :-) – Cameron
मुझे अभी भी समझ में नहीं आया कि उन्होंने इसे इस तरह क्यों डिजाइन किया है ... 'char *' मेरे लिए बहुत अधिक प्राकृतिक लगता है (एक प्रकार के रूप में)। – jwueller
यह एक चरित्र के लिए एक सूचक है। आप लिख सकते हैं या तो
char* bla;
या
char *bla;
यह एक ही है।
अब, सी में, तार के लिए एक पॉइंटर का उपयोग स्ट्रिंग के लिए किया जाता था: स्ट्रिंग का पहला अक्षर होगा जहां पॉइंटर इंगित करता है, अगला पता जो अगला आता है, आदि में अगला चरित्र, नल तक -टर्मिनल-प्रतीक \0
पहुंचा गया था।
लेकिन: सी ++ में ऐसा करने की कोई आवश्यकता नहीं है। इसके बजाय std :: स्ट्रिंग (या समान वर्ग) का उपयोग करें। चार * सामान को सुरक्षा कीड़े के लिए एकल सबसे लगातार स्रोत नाम दिया गया है!
मैं वही उत्तर पोस्ट करने वाला था – Ramilol
http://cplusplus.com/doc/tutorial/pointers/
*
चरित्र दो अलग-अलग स्थानों में दिखाई देता है जब संकेत के साथ काम कर। सबसे पहले, "पॉइंटर टू टी" को T*
द्वारा टाइप किया गया है (टाइप नाम पर *
जोड़ना)। दूसरा, जब एक पॉइंटर को संदर्भित किया जाता है, जो *
को पॉइंटर वैरिएबल के नाम पर प्रीपेड करके किया जाता है जिसे आप हटाना चाहते हैं।
व्हाइटस्पेस सामान्य रूप से कोई फर्क नहीं पड़ता, इसलिए
char* suchandsuch;
char *suchandsuch;
char
*
suchandsuch;
सब एक ही हैं।
- 1. char * const argv [] क्या है?
- 2. क्या char * = "string" या char * = new char [6] को नष्ट करने की आवश्यकता है?
- 3. char ** से const char **
- 4. 'char (* p) [5];' का अर्थ क्या है?
- 5. char
- 6. char
- 7. मेमोरी आवंटन char * और char []
- 8. "char"
- 9. char
- 10. char *
- 11. char
- 12. char *
- 13. "const char *" से "char" त्रुटि
- 14. बिना हस्ताक्षर किए गए char का परिणाम << unsigned char हस्ताक्षरित नहीं है char
- 15. stl map <char*,char*> destructor
- 16. char (char * नहीं) से std :: स्ट्रिंग
- 17. क्या अधिक समझ में आता है - char * string या char * string?
- 18. क्या सी में char [] से char * को परिवर्तित करना संभव है?
- 19. char * buffer
- 20. charWindowText char []
- 21. utf8 char
- 22. एक char
- 23. क्या फ़ंक्शन से "कॉन्स्ट char *" वापस करना अच्छा विचार है?
- 24. (char) 0 और '\ 0' के बीच क्या अंतर है? सी
- 25. 'char' कीवर्ड के लिए क्या उपयोग किया जाता है?
- 26. ओरेकल डेटाटाइप: क्या मुझे VARCHAR2 या CHAR
- 27. कृपया सेट-कंटेंट $ zipfilename ("पीके" + [char] 5 + [char] 6 + ("$ ([char] 0)" * 18)) पावरहेल स्क्रिप्ट की लाइन
- 28. अद्वितीय_ptr <char[]> से unique_ptr <const char []>
- 29. सी # बाइट [] और char []
- 30. lptstr को char *
सी रिक्त स्थान की परवाह नहीं करता है, इसलिए 'char * foo;' 'char * foo जैसा है;' –
@PaulTomblin: सी रिक्त स्थान पर ध्यान देता है, बस उस विशेष मामले में नहीं। 'चार सेब; 'और' चापलूसी; 'काफी अलग हैं। –