خوب است قبل از بحث در مورد اینگونه توابع ، مثالی را متذکر شویم .
مثال ۱ : برنامه ای که با استفاده از یک تابع ، زمانی که شامل ساعت ، دقیقه و ثانیه است را از ورودی خوانده و این زمان را به ثانیه محاسبه می نماید :
#include <stdio.h> #include <conio.h> void convert(); void main() { convert(); getch(); } void convert() { int hours,minutes,second,time ; printf("enter time to be convertd"); printf("\n hour/minutes/second :"); scanf("%d%d%d",&hours,&minutes,&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 گفته می شود .
همانطوریکه مشاهده میشود باید درتابع فراخواننده ( در اینجا تابع اصلی ) نوع تابع convert را که از نوع void است به کامپایلر اعلان نمود وسپس در حین تعریف تابع نوع آن مشخص گردد ( ()void convert ) . در توابعی مانند convert که هیچگونه پارامتری ندارند ، برای جلوگیری از هر گونه اشتباه احتمالی در فراخوانی اینگونه توابع ( که ممکن است اشتباها با پارامتر فراخوانی گردند ) می توان بجای پارامتر و آرگومان از کلمه کلیدی void استفاده نمود. با توجه به این نکته که اگر اشتباها توابع فاقد هرگونه پارامتر ( و آرگومان ) با پارامتر فراخوانی گردند . کامپایلر C خطایی را اعلام نمی کند. در این حالت ذکر کلمه کلیدی void بجای پارامتر و آرگومان تابع مفید به نظر میرسد.
سلام خیلی خیلی ممنونم از سایت خوبتون و آموزش های عالیتون واقعا خسته نباشین
فقط کد هاتون اکثرا این مشکل رو دارن باید به جای void main از int main (void) استفاده کنین اینطوری که شما نوشتین ارور میده برنامه