توابعی که هیچ مقداری را برنمی گردانند
خوب است قبل از بحث در مورد اینگونه توابع ، مثالی را متذکر شویم .
مثال ۱: برنامه ای که با استفاده از یک تابع ، زمانی که شامل ساعت ، دقیقه
و ثانیه است را از ورودی خوانده و این زمان را به ثانیه محاسبه می نماید : main)(
{
convert )(;
}
convert)(
{
int hours/minutes/second/time ;
printf(“enter time to be convertd”);
printf(“\n hour/minutes/second : “);
scanf(“%d%d”/&hours/&minutes);
printf(“%d/&second);
time=(60*hours+minutes)*60+second ;
printf(“\ntime is: %d second.”/time);
}
به نمونه ای از خروجی برنامه مثال ۱ توجه نمایید : enter time to be convertd
hour/minutes/secound : 4 8 30
time is: 14910 second.
در مثال ۱ از تابعی به نام convert استفاده شده است که هیچگونه پارامتری
ندارد . متغیرهای مورد نیاز این تابع ، تعریف شده ، اطلاعات از ورودی خوانده
می شوند و پس از انجام محاسبات به خروجی منتقل می گردند . این تابع هیچ مقداری
را به تابع فراخوانده ( تابع اصلی ) برنمی گرداند . به چنین توابعی توابع از
نوع void گفته می شود . اگر بخواهیم برنامه مثال ۱ را با استفاده از این تعریف
( تابع از نوع void ) بنویسیم ، مثال (۲) حاصل خواهد شد .
مثال ۲: برنامه مثال ۱ با استفاده از تعریف نوع void : main)(
{
void convert )(;
convert )(;
}
void convert)(
{
int hours/minutes/second/time ;
printf(“enter time to be convertd”);
printf(“\n hour/minutes/second : “);
scanf(“%d%d”/&hours/&minutes);
printf(“%d/&second);
time=(60*hours+minutes)*60+second ;
printf(“\ntime is: %d second.”/time);
}
همانطوریکه در مثال ۲ مشاهده میشود باید درتابع فراخواننده ( در اینجا تابع
اصلی ) نوع تابع convert را که از نوع void است به کامپایلر اعلان نمود وسپس در
حین تعریف تابع نوع آن مشخص گردد (()void convert) .
در توابعی مانند convert که هیچگونه پارامتری ندارند ، برای جلوگیری از
هر گونه اشتباه احتمالی در فراخوانی اینگونه توابع ( که ممکن است اشتباها” با
پارامتر فراخوانی گردند ) می توان بجای پارامتر و آرگومان از کلمه کلیدی void
استفاده نمود. با توجه به این نکته که اگر اشتباها” توابع فاقد هرگونه پارامتر
( و آرگومان ) با پارامتر فراخوانی گردند . کامپایلر C خطایی را اعلام نمی کند.
در این حالت ذکر کلمه کلیدی void بجای پارامتر و آرگومان تابع مفید بنظر میرسد
( مثال ۳ ) .
مثال ۳: main)(
{
void convert(void );
convert )(;
}
void convert(void)
{
int hours/minutes/second/time ;
printf(“enter time to be convertd”);
printf(“\n hour/minutes/second : “);
scanf(“%d%d”/&hours/&minutes);
printf(“%d/&second);
time=(60*hours+minutes)*60+second ;
printf(“\ntime is: %d second.”/ti
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن