से सरणी तत्वों के मानों को बदलने में मैं सी ++ (प्रत्येक नौसिखिया एक्सडी के लिए सामान्य परिचय) में नया हूं। खैर, मैं एक कार्यक्रम विकसित कर रहा था, जब एक अप्रत्याशित व्यवहार दिखाया गया !! मैंने अपने कार्यक्रम में चर और सरणी का पता लगाया जब तक कि मैं इस व्यवहार को करने वाले कोड के पैटर्न को निर्धारित करने में सफल नहीं हुआ !!फ़ंक्शन
#include <iostream>
using namespace std;
void showArray(int arr[], int n)
{
for(int i = 0; i < n; i++) cout << arr[i] << " ";
cout << endl;
}
void someFunction(int x[], int n) // changes the original values
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
}
void someFunction2(int * x, int n)
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
} // changes the original values
int someFunction3(int x[], int n)
{
x[0] = 2;
x[1] = 1;
x[2] = 0;
return 0;
} // changes the original values
int someFunction4(int x[], int n)
{
x = new int[n];
x[0] = 2;
x[1] = 1;
x[2] = 0;
return 0;
} // does NOT change the original value
int main(void)
{
int * y = new int[3];
y[0] = 0;
y[1] = 1;
y[2] = 2;
showArray(y, 3);
someFunction4(y, 3);
showArray(y, 3);
return 0;
}
मुझे लगता है कि टिप्पणी के साथ कोड बताते हैं जहां समस्या है, लेकिन अधिक जानकारी है::
यहाँ कि जो मैं पता लगाने के लिए कैसे चीजें काम का इस्तेमाल किया है है वहाँ 4 कार्य हैं, अर्थात्, someFunction , कुछ फ़ंक्शन 2, कुछ फ़ंक्शन 3, कुछ फ़ंक्शन 4। वहाँ एक सरणी है, y, जिसमें मान 0, 1, 2. सभी फ़ंक्शन मूल सरणी के मान को बदलते हैं। यही है, कुछ फ़ंक्शनक्शन कॉल कॉल के बाद मुख्य फ़ंक्शन में वाई के तत्व फ़ंक्शन को कॉल करने से पहले थे।
मेरा प्रश्न है: क्यों कुछ फ़ंक्शन 4 एकमात्र फ़ंक्शन है जो मानों को परिवर्तित नहीं करता है?
अग्रिम धन्यवाद। और मेरी बुरी अंग्रेजी के लिए खेद है।
धन्यवाद। आपका जवाब स्पष्ट है। तो, पुराने सरणी को नया मूल्य कैसे लेना है? – joker
असाइनमेंट से छुटकारा पाएं 'x = new int [n]; ' – GraphicsMuncher
क्या होगा यदि मैं फ़ंक्शन के भीतर से सरणी आकार को बदलना चाहता हूं? – joker