خوب است قبل از بحث در مورد اینگونه توابع ، مثالی را متذکر شویم .
مثال 1: برنامه ای که با استفاده از یک تابع ، زمانی که شامل ساعت ، دقیقه
و ثانیه است را از ورودی خوانده و این زمان را به ثانیه محاسبه می نماید : 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);
}
به نمونه ای از خروجی برنامه مثال 1 توجه نمایید : enter time to be convertd
hour/minutes/secound : 4 8 30
time is: 14910 second.
در مثال 1 از تابعی به نام convert استفاده شده است که هیچگونه پارامتری
ندارد .
متغیرهای مورد نیاز این تابع ، تعریف شده ، اطلاعات از ورودی خوانده
می شوند و پس از انجام محاسبات به خروجی منتقل می گردند .
این تابع هیچ مقداری
را به تابع فراخوانده ( تابع اصلی ) برنمی گرداند .
به چنین توابعی توابع از
نوع void گفته می شود .
اگر بخواهیم برنامه مثال 1 را با استفاده از این تعریف
( تابع از نوع void ) بنویسیم ، مثال (2) حاصل خواهد شد .
مثال 2: برنامه مثال 1 با استفاده از تعریف نوع 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);
}
همانطوریکه در مثال 2 مشاهده میشود باید درتابع فراخواننده ( در اینجا تابع
اصلی ) نوع تابع convert را که از نوع void است به کامپایلر اعلان نمود وسپس در
حین تعریف تابع نوع آن مشخص گردد (()void convert) .
توابعی که هیچ مقداری را برنمی گردانند خوب است قبل از بحث در مورد اینگونه توابع ، مثالی را متذکر شویم .
مثال 1: برنامه ای که با استفاده از یک تابع ، زمانی که شامل ساعت ، دقیقه و ثانیه است را از ورودی خوانده و این زمان را به ثانیه محاسبه می نماید : 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); } به نمونه ای از خروجی برنامه مثال 1 توجه نمایید : enter time to be convertd hour/minutes/secound : 4 8 30 time is: 14910 second.
در مثال 1 از تابعی به نام convert استفاده شده است که هیچگونه پارامتری ندارد .
متغیرهای مورد نیاز این تابع ، تعریف شده ، اطلاعات از ورودی خوانده می شوند و پس از انجام محاسبات به خروجی منتقل می گردند .
این تابع هیچ مقداری را به تابع فراخوانده ( تابع اصلی ) برنمی گرداند .
به چنین توابعی توابع از نوع void گفته می شود .
اگر بخواهیم برنامه مثال 1 را با استفاده از این تعریف ( تابع از نوع void ) بنویسیم ، مثال (2) حاصل خواهد شد .
مثال 2: برنامه مثال 1 با استفاده از تعریف نوع 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); } همانطوریکه در مثال 2 مشاهده میشود باید درتابع فراخواننده ( در اینجا تابع اصلی ) نوع تابع convert را که از نوع void است به کامپایلر اعلان نمود وسپس در حین تعریف تابع نوع آن مشخص گردد (()void convert) .
در توابعی مانند convert که هیچگونه پارامتری ندارند ، برای جلوگیری از هر گونه اشتباه احتمالی در فراخوانی اینگونه توابع ( که ممکن است اشتباها" با پارامتر فراخوانی گردند ) می توان بجای پارامتر و آرگومان از کلمه کلیدی void استفاده نمود.
با توجه به این نکته که اگر اشتباها" توابع فاقد هرگونه پارامتر ( و آرگومان ) با پارامتر فراخوانی گردند .
کامپایلر C خطایی را اعلام نمی کند.
در این حالت ذکر کلمه کلیدی void بجای پارامتر و آرگومان تابع مفید بنظر میرسد ( مثال 3 ) .
مثال 3: 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