کد:
#include <iostream>
//using namespace std;

int * j;

void f(int& v) {
j=&v;
}

int main () {

int i=111, tmp;
f(i);
*j=222;
cout << i << endl;
cin >> tmp;

return 0;
}

خروجي: 222

کد:
#include <iostream>
//using namespace std;

int * j;

void f(int * v) {
j=v;
}

int main () {

int i=111, tmp;
f(&i);
*j=222;
cout << i << endl;
cin >> tmp;

return 0;
}



خروجي: 222

بنده در اينجا دو روش را براي گرفتن آدرس يك متغيير آرگومان در يك تابع تست كرده ام كه ظاهرا (با توجه به خروجي) هردو در سي++ كار ميكنند. در روش اول ما نيازي به گذاشتن علامت & قبل از آرگومان در هنگام پاس كردن به تابع نداريم.
ميخواستم بدانم نظر شما چيست و كدام روش بهتر و اصولي تر است و آيا اصولا هردو درست هستند يا خير (نتيجه ميتواند تصادفي باشد).

ناگفته نماند كه اين روش را براي متغيير حاوي يك نمونه از يك كلاس هم تست كردم كه نتيجه مشابه بود:
کد:

#include <iostream>
//using namespace std;

class c {
public:
int i;
} cc;

c * j;

void f(c & v) {
j=&v;
}

int main () {
int tmp;

cc.i=111;

f(cc);
j->i=222;
cout << cc.i << endl;

cin >> tmp;
return 0;
}


خروجي: 222