दिलचस्प पोस्ट
_DEBUG बनाम NDEBUG जावास्क्रिप्ट में तेजी से स्थिर सॉर्टिंग एल्गोरिथ्म कार्यान्वयन कैसे अल्पविराम से अलग स्ट्रिंग को ArrayList में परिवर्तित करें? IPhone पर रीयल-टाइम पिच स्थानांतरण टेक्सटेरा में चयनित पाठ कैसे प्राप्त करें? सी ++ ब्लॉक – मूल्य या संदर्भ से अपवाद पकड़ो? क्या एक एकल .NET प्रक्रिया के लिए स्मृति सीमा है? अलग-अलग चर (bash) में स्टडआउट और स्टेडरर को स्टोर / कैप्चर करें घोषित गुणों के लिए डॉट नोटेशन बनाम संदेश नोटेशन किसी विशेष समयक्षेत्र में जावास्क्रिप्ट की तारीख को आरंभ करने के लिए आईआईएस एक्सप्रेस बाहरी अनुरोध को सक्षम करता है वितरित संस्करण नियंत्रण प्रणाली और एंटरप्राइज़ – एक अच्छा मिश्रण? एंड्रॉइड में ड्रॉएबल के रंग कैसे बदलेंगे? अतुल्यकालिक बनाम तुल्यकालिक निष्पादन, इसका वास्तव में क्या अर्थ है? गतिशील रूप से फेसबुक ओपन ग्राफ़ मेटा टैग जेनरेट करना

जब मैं फ़ंक्शन के अंदर कोई पैरामीटर बदलता हूं, तो क्या यह कॉलर के लिए भी बदलता है?

मैंने नीचे एक फ़ंक्शन लिखी है:

void trans(double x,double y,double theta,double m,double n) { m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y; } 

अगर मैं उन्हें उसी फाइल में कॉल करता हूँ

 trans(center_x,center_y,angle,xc,yc); 

क्या xc और yc परिवर्तन का मूल्य होगा? यदि नहीं, तो मुझे क्या करना चाहिए?

वेब के समाधान से एकत्रित समाधान "जब मैं फ़ंक्शन के अंदर कोई पैरामीटर बदलता हूं, तो क्या यह कॉलर के लिए भी बदलता है?"

चूंकि आप सी ++ का प्रयोग कर रहे हैं, अगर आप बदलना चाहते हैं, तो आप संदर्भ का उपयोग कर सकते हैं:

 void trans(double x, double y, double theta, double& m, double& n) { m=cos(theta)*x+sin(theta)*y; n=-sin(theta)*x+cos(theta)*y; } int main() { // ... // no special decoration required for xc and yc when using references trans(center_x, center_y, angle, xc, yc); // ... } 

यदि आप सी का उपयोग कर रहे थे, तो आपको स्पष्ट संकेत या पते, जैसे कि:

 void trans(double x, double y, double theta, double* m, double* n) { *m=cos(theta)*x+sin(theta)*y; *n=-sin(theta)*x+cos(theta)*y; } int main() { /* ... */ /* have to use an ampersand to explicitly pass address */ trans(center_x, center_y, angle, &xc, &yc); /* ... */ } 

संदर्भों का उपयोग करने के बारे में कुछ और जानकारी के लिए संदर्भों पर सी ++ अकसर किये गए सवाल लाइट की प्रविष्टि की जांच करने की सिफारिश करूँगा I

संदर्भ से गुजरना वास्तव में एक सही जवाब है, हालांकि, सी ++ सॉर्ट-इन की अनुमति std::tuple और (दो मानों के लिए) std::pair :

 #include <cmath> #include <tuple> using std::cos; using std::sin; using std::make_tuple; using std::tuple; tuple<double, double> trans(double x, double y, double theta) { double m = cos(theta)*x + sin(theta)*y; double n = -sin(theta)*x + cos(theta)*y; return make_tuple(m, n); } 

इस तरह, आपको आउट-मापदंडों का उपयोग बिल्कुल भी नहीं करना पड़ता है।

कॉलर की तरफ, आप अन्य चर में टपल को खोलने के लिए std::tie का उपयोग कर सकते हैं:

 using std::tie; double xc, yc; tie(xc, yc) = trans(1, 1, M_PI); // Use xc and yc from here on 

उम्मीद है की यह मदद करेगा!

आपको संदर्भ द्वारा अपने चर को पास करने की आवश्यकता है जिसका मतलब है

 void trans(double x,double y,double theta,double &m,double &n) { ... } 

जैसा कि ऊपर कहा गया है, आपको 'एम' और 'एन' के बदलते मूल्यों को वापस करने के संदर्भ से पारित करना होगा, लेकिन … संदर्भ से सब कुछ पारित करने पर विचार करना और उन पैरामीटर के लिए कॉन्स्ट का उपयोग करना जो आप अपने फ़ंक्शन के अंदर बदलना नहीं चाहते हैं

 void trans(const double& x, const double& y,const double& theta, double& m,double& n)