PDA

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



dada_vahid
یک شنبه 12 دی 1389, 18: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
سه شنبه 14 دی 1389, 00:17 صبح
کامپایلر آدرسه دستوری رو که تابعه مورده نظرتو فراخوانی کرده تو stack ذخیری می کنه هر موقع به آخره تابع میرسه یا به دستوره return آخرین عدده موجود تو استک رو بر می داره میره تو همون آدرس بقیه برنامه رو اجرا می کنه

dada_vahid
سه شنبه 14 دی 1389, 00:44 صبح
فهمیدم کجاست و درک کردم