मैं पॉइंटर्स को स्वैप करने के लिए एक फ़ंक्शन पर काम कर रहा हूं और मुझे पता नहीं चल रहा है कि यह क्यों काम नहीं कर रहा है। जब मैं स्वैप फ़ंक्शन में आर और एस प्रिंट करता हूं तो मूल्य बदल जाते हैं, जिससे मुझे विश्वास होता है कि मैं एक प्रतिलिपि बना रहा हूं जिसमें मुझे समझ में नहीं आता क्योंकि मैं पी और क्यू के संदर्भ में पास करता हूं।सी ++ स्वैपिंग पॉइंटर्स
void swap(int *r, int *s)
{
int *pSwap = r;
r = s;
s = pSwap;
return;
}
int main()
{
int p = 7;
int q = 9;
swap(&p, &q);
cout << "p = " << p << "q= " << q << endl;
return 0;
}
प्रिंटों: पी = 7q = 9
आप पॉइंटर्स की प्रतियों को जोड़ रहे हैं, न कि वे जो डेटा इंगित करते हैं। यह सिर्फ 'std :: स्वैप (पी, क्यू) के लिए आसान है; '। या, यदि प्रस्ताव वास्तव में इसे बनाता है, 'पी: =: क्यू;' भविष्य में कभी-कभी। – chris
@ क्रिस: वायाट। क्या आप प्रस्तावित प्रस्ताव से लिंक कर सकते हैं? (प्रतीकों के लिए खोज मुश्किल है।) – GManNickG
@GManNickG, हाँ, यकीन है। [यहां आप जाओ] (http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3553.pdf)। मुझे इसे बनाने में बहुत संदेह था। – chris