#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];
std::cout << x << endl;
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);
std::cout << y << endl;
someFunction4(y, 3) ;
std::cout << y << endl;
showArray(y, 3);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgc2hvd0FycmF5KGludCBhcnJbXSwgaW50IG4pCnsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNvdXQgPDwgYXJyW2ldIDw8ICIgIjsKICAgIGNvdXQgPDwgZW5kbDsKfQp2b2lkIHNvbWVGdW5jdGlvbihpbnQgeFtdLCBpbnQgbikgLy8gY2hhbmdlcyB0aGUgb3JpZ2luYWwgdmFsdWVzCnsKICAgIHhbMF0gPSAyOwogICAgeFsxXSA9IDE7CiAgICB4WzJdID0gMDsKfSAKdm9pZCBzb21lRnVuY3Rpb24yKGludCAqIHgsIGludCBuKQp7CiAgICB4WzBdID0gMjsKICAgIHhbMV0gPSAxOwogICAgeFsyXSA9IDA7Cn0gLy8gY2hhbmdlcyB0aGUgb3JpZ2luYWwgdmFsdWVzCmludCBzb21lRnVuY3Rpb24zKGludCB4W10sIGludCBuKQp7CiAgICB4WzBdID0gMjsKICAgIHhbMV0gPSAxOwogICAgeFsyXSA9IDA7CiAgICByZXR1cm4gMDsKfSAvLyBjaGFuZ2VzIHRoZSBvcmlnaW5hbCB2YWx1ZXMKaW50IHNvbWVGdW5jdGlvbjQoaW50IHhbXSwgaW50IG4pCnsKICAgIHggPSBuZXcgaW50W25dOwogICAgc3RkOjpjb3V0IDw8IHggPDwgZW5kbDsKICAgIHhbMF0gPSAyOwogICAgeFsxXSA9IDE7CiAgICB4WzJdID0gMDsKICAgIHJldHVybiAwOwp9IC8vIGRvZXMgTk9UIGNoYW5nZSB0aGUgb3JpZ2luYWwgdmFsdWUKCmludCBtYWluKHZvaWQpCnsKICAgIGludCAqIHkgPSBuZXcgaW50WzNdOwogICAgeVswXSA9IDA7CiAgICB5WzFdID0gMTsKICAgIHlbMl0gPSAyOwogICAgc2hvd0FycmF5KHksIDMpOwogICAgCiAgICBzdGQ6OmNvdXQgPDwgeSAgPDwgZW5kbDsKICAgIAogICAgc29tZUZ1bmN0aW9uNCh5LCAzKSA7CiAgICBzdGQ6OmNvdXQgPDwgeSA8PCBlbmRsOwogICAgCiAgICBzaG93QXJyYXkoeSwgMyk7CiAgICByZXR1cm4gMDsKfQ==