मैं एक फ़ंक्शन लिखना चाहता हूं जो डेटा का एक सरणी इनपुट करता है और पॉइंटर्स का उपयोग करके डेटा का एक और सरणी आउटपुट करता है।
मैं सोच रहा हूँ कि क्या परिणाम है अगर दोनों src
और dst
एक ही पते की ओर इशारा किया जाए क्योंकि मुझे पता है कि कंपाइलर कास्ट के लिए ऑप्टिमाइज़ कर सकता है। क्या यह अपरिभाषित व्यवहार है? (मैंने C और C ++ दोनों को टैग किया है क्योंकि मुझे यकीन नहीं है कि उत्तर उनके बीच भिन्न हो सकता है, और मैं दोनों के बारे में जानना चाहता हूं।)
void f(const char *src, char *dst) {
dst[2] = src[0];
dst[1] = src[1];
dst[0] = src[2];
}
int main() {
char s[] = "123";
f(s,s);
printf("%s\n", s);
return 0;
}
उपरोक्त प्रश्न के अलावा, क्या यह अच्छी तरह से परिभाषित है अगर मैं const
मूल कोड में हटाऊं ?
const
नहीं है "आप (= समारोह) द्वारा एक दायित्व उस सूचक के माध्यम से परिवर्तन करने के लिए नहीं"। सी मानकconst
एक डाली के माध्यम से समारोह को हटाने और फिर परिणाम के माध्यम से वस्तु को संशोधित करने की अनुमति देता है । अनिवार्य रूप से,const
किसी वस्तु को अनजाने में संशोधित करने से बचने में मदद करने के लिए सिर्फ सलाहकार और प्रोग्रामर के लिए एक सुविधा है।