یعنی بعد از شرطی یا اتمام تابع فرعی به ابتدای تابع اصلی برگشت.
در هر دو صورت برگشتی int و void ؟
Printable View
یعنی بعد از شرطی یا اتمام تابع فرعی به ابتدای تابع اصلی برگشت.
در هر دو صورت برگشتی int و void ؟
بعد از این که برگشت به main با goto بفرستش به اول main
البته کارشناس ها و برنامه نویسان حرفه ای استفاده از goto رو پیشنهاد نمیکنن
خوب از تابع فرعی چطور بیام تو تابع اصلی که از کل برنامه خارج نشه به جز حالت switch..case
وقتی زیربرنامه رو صدا بزنی بعد از اجرا شدنش دوباره به main برمیگرده دیگه
و میتونیید بعد از صدا زدنش از goto استفاده کنید
اگه در زیربرنامه از for ( ; ; ) استفاده بشه چی ؟
فرقی نمیکنه
البته با goto از حلقه هم میتونید خارج بشید
یعنی با goto میشه از یک بلوک به بلوک دیکه سوییچ کرد؟
سویچ رو نمیدونم والا ولی میشه خارج شد
اونم میتونی امتحان کنی
امتحان کردم نشد! روش دیگه ای نیست ؟
روش دیگه ای نبود !!!
فکر نمیکنم با هیچ دستوری شما بتونین به وسط یک حلقه یا دستور دیگه ای سوییچ کنین
نمیدونم چرا همچین کاری می خوای بکنی ولی این نمونه کدا رو ببین
مثلا اگه بخوای بعد اتمام یه تابع فرعی به ابتدای تابع main بری کدی که مشخص کردم رو انتهای تابع فرعی قرار بده(احتمال اینکه روی بعضی کامپایلر ها کار نکنه هست):
کد:void func(void);
int main()
{
...
...
...
return 0;
}
void func(void)
{
...
...
...
__asm mov dword ptr [esp+4], offset main
}
اگه وسط تابع میخوای استفاده کنی میتونی خود تابع main رو فراخانی کنی، ولی خوب باید یه فکری هم برای آدرس های برگشتی
تابع فرعی کنی که تو stack میمونن خصوصا اگه تابع main رو بخوای زیاد فراخوانی کنی.
شاد باشیدکد:void func(void);
int main()
{
...
...
...
return 0;
}
void func(void)
{
...
...
main();
...
...
}
محتویات Main رو بریز تو یه تابع و بازگشتی کن تو تابع فرعیت
روش های بالا رو اجرا کردم ولی نتیجه ای نگرفتم.
در ضمن من چند برنامه رو (توابع فرعی) در چند هدر مختلف گذاشتم و در main بوسیله switch..case به اونها دسترسی دارم ولی میخوام با اجرای شرطی در توابع فرعی به ابتدای تابع main برگشته و به برنامه ی دیگه ای (تابع فرعی دیگه) دسترسی پیدا کنم و به همین منوال در هر موقعیتی به تابع اصلی و توابع فرعی دسترسی داشته باشم.
vc++ 6 in windows
gcc in linux
ببین میتونی از این ایده بگیری، من وقت ندارم بیشتر توضیح بدم:نقل قول:
" اجراش نکن حلقه بی نهایت میده
میدونم ساده به نظر میرسه ، حالا شما فکر کن اون کاری که تو MAIN قرار هست انجام بشه رو تو یکی از این تابع های فرعی بزاری و با یه فراخوانی ساده از هر تابعی بپری به MAIN و برای کنترل هم میتونی از چند تا متغیر عمومی یا اشاره گر استفاده کنی که به ازای مقادیر خاص تابع های خاصی انجام بشه .کد:#include <stdio.h>
int hello(int a);
int nothello (int b);
// Don't run it , it is an infinitive loop...
main()
{
hello(1);
}
int hello(int a)
{
int s=0;
if (a == 1)
{
s=0;
}
else
{
s=1;
}
nothello(s);
return 0;
}
int nothello (int b)
{
if (b == 1)
{
printf("\nthere is 1");
}
else
{
printf("\nthere is 0");
}
hello (b);
return 0;
}