PDA

View Full Version : مشکل در توابع



dada_vahid
یک شنبه 12 دی 1389, 17:01 عصر
به نام خدا
دوستان خسته نباشید


من توی درک توابع یک خورده مشکل دارم چیزی که می دونم اینکه توابع 4 نوع هستند

1- چیزی را دریافت نمی کنند و چیزی را برنمی گردانند
2- چند مقدار را دریافت و چیزی را برنمی گردانند
3- چند مقدار را دریافت و یک مقدار را برمیگردانند
4-چند مقدار را دریافت و چندین مقدار را برمیگردانند

برنامه ای که من دارم روش کار میکنم به این صورت

#include<iostream.h>
#include<conio.h>
void f1(int a,int b)
{
a++;
cout<<a<<b;
}

int f2(int a ,int b)
{
a+=3;
b--;
f1(b,a);
return (a*b);
}

int f3(int a)
{
int c;
a*=a;

c=f2(a,a-1);
return c;
}
main()
{
while(1)
{
int a;
cout<<" Enter Number : ";
cin>>a;
cout<<f3(a+1)<<a;
cout<<endl;
cout<<endl;
}

getch();
}


مشکل من توی اون نقاطی هستش که زیرش رو خط کشیدم
برنامه از کجا میدونه که نتیجه a*b رو کجا ارسال کنه

c=f2(a,a-1);
return c خط اول چه کار میکنه و همین طور خط دوم
ممنونم

Pouri_sb
دوشنبه 13 دی 1389, 23:17 عصر
کامپایلر آدرسه دستوری رو که تابعه مورده نظرتو فراخوانی کرده تو stack ذخیری می کنه هر موقع به آخره تابع میرسه یا به دستوره return آخرین عدده موجود تو استک رو بر می داره میره تو همون آدرس بقیه برنامه رو اجرا می کنه

dada_vahid
دوشنبه 13 دی 1389, 23:44 عصر
فهمیدم کجاست و درک کردم