PDA

View Full Version : سوال: ببخشید میشه راهنماییم کنید چرا این کد 12 برمیگردونه



saeed s
دوشنبه 17 دی 1397, 00:20 صبح
#include<iostream.h>
#include<conio>
int f(int x, int *y, int *z)
{
x++;




//(*y)++;
*z+=*z ;
return *z;
//return x+(*y)+(*z);
}
int main()
{
int x=1;
int y=2;
int z=3;
y=f(x, &y, &z);
z=f(z, &x, &y);
x=f(y, &z, &x);
cout<< y;//<<'\n'<< y<<'\n'<< z ;
// return 0;
getch();
}

farhad_shiri_ex
سه شنبه 18 دی 1397, 16:13 عصر
#include<iostream.h>
#include<conio>
int f(int x, int *y, int *z)
{
x++;




//(*y)++;
*z+=*z ;
return *z;
//return x+(*y)+(*z);
}
int main()
{
int x=1;
int y=2;
int z=3;
y=f(x, &y, &z);
z=f(z, &x, &y);
x=f(y, &z, &x);
cout<< y;//<<'\n'<< y<<'\n'<< z ;
// return 0;
getch();
}

پس باید چند برگردونه؟ 12 باید باشه که هست؟
اگر منظورتون این هست که باید 13 بشه چون در آخرین باری که ارسال شده به تابع f باید مقدارش یکی اضافه بشه! البته که نمیشه چون در این ارسال شما مقدار متغیر y را با مقدار ارسال کردید پس بنابراین در تابع f یک کپی جدید از این متغییر خواهید داشت و مقدار جدید تغییری در مقدار متغییرy تابع main نخوهد داشت.