मैंने एक विधि शीर्ष लेख दिया है:
char* thisMethod(char* input){}
क्या यह कहना संभव है,
char var = input[0];
? मुझे पता है कि "इनपुट" एक चार सरणी के रूप में होगा।
मैं स्पष्ट रूप से C ++ पॉइंटर्स के लिए नया हूं, मुझे फेंक रहा है। मैंने शोध करने की कोशिश की कि कैसे चार पॉइंटर फ़ंक्शन तर्कों के साथ काम करना है, लेकिन कुछ भी मदद करने के लिए पर्याप्त नहीं मिला। सहायता के लिए धन्यवाद।
उत्तर:
उत्तर № 1 के लिए 1एक गलत धारणा है जो आपको आगे की परेशानियों में ले जा सकती है:
मुझे पता है कि "इनपुट" एक चार सरणी के रूप में होगा।
नहींं: उस फ़ंक्शन के दायरे से, input
एक है किसी पात्र का सूचक। फ़ंक्शन के पास यह जानने का कोई तरीका नहीं है कि ऐसा पॉइंटर कहां से आता है।
यदि यह फ़ंक्शन को कॉल करने पर सरणी से लिया गया है तो यह एक होगा pointer to the first element of that array
.
क्योंकि पॉइंटर में एक अंकगणित होता है जो ऑफ़सेट जोड़ने की अनुमति देता है और क्योंकि []
ऑपरेटर पॉइंटर्स ट्रांसलेट के रूप में लागू होता है a[b] = *(a+b)
परिभाषा में, जो भी कोड में, यदि है a
सूचक, *a
तथा a[0]
पूर्ण पर्यायवाची हैं।
के एक अनुक्रम के रूप में एक सरणी के लिए सोचो बक्से और एक सूचक के रूप में अपने हाथ की तर्जनी
में एक ऑफसेट जोड़ना उंगली (पसंद finger+2
) माध्यम "इसे फिर से इंगित करें"और इसे संदर्भित (जैसे) *finger
) का अर्थ है "अंदर देखो यह क्या है इशारा करना"।
[] संकेत पर ऑपरेटर एक ही बार में दोनों ऑपरेशन करने के लिए एक शॉर्टकट है।
Arrays एक और अलग बात है। जब बिंदुओं के साथ व्यवहार करते हैं, तो उनके बारे में नहीं सोचते हैं, क्योंकि अधिक जटिल परिस्थितियों में, जैसे कि बहुआयामी सरणी या बहु-परोक्ष संकेत - अभिव्यक्ति [b] [c] जीता "t काम अब उसी तरह से।
जवाब के लिए 0 № 2
पॉइंटर से मान प्राप्त करने के दो तरीके हैं, *
तथा []
। निम्नलिखित समतुल्य हैं:
char var1 = *input;
char var2 = input[0];
जब आप जानते हैं तो कोष्ठक का उपयोग करना अधिक सामान्य हैआपको एक सरणी दी गई थी, क्योंकि यह आपको एक सूचकांक की आपूर्ति करने की अनुमति देता है। आपको यह जानने का कोई तरीका चाहिए कि सरणी का अंत इतना है कि आप इसे किसी भी पिछले उपयोग का प्रयास नहीं करते हैं, आपका कार्य उस महत्वपूर्ण विवरण को याद कर रहा है।
जवाब के लिए 0 № 3
जब तक यह फ़ंक्शन के अंदर है और input
कुछ मान्य करने के लिए अंक (नहीं NULL
/nullptr
और कचरा स्थान नहीं) तब कर रहे हैं char var = input[0];
बस ठीक है। यह जैसा है वैसा ही है char var = *input
.
अगर यह एक स्ट्रिंग है जिसे मैं उपयोग करने की सलाह देता हूं std::string
.