نمایش نتایج 1 تا 3 از 3

نام تاپیک: تابع و نوع void

  1. #1

    تابع و نوع void

    دوستان به متن زیر توجه کنید :
    " اگر تابع هیچ مقداری را به برنامه فراخوان باز نگرداند و فاقد آرگومان باشد ، نوع آن به صورت void تعریف می شود "
    تعاریف بالا تابع و خصوصا مقدار void را تعریف کرده است .
    خب حالا به دو مثال زیر توجه کنید :
    1 :
        
    #include <stdio.h>
    int main (void)
    {
    printf (“Programming is fun.\n”);
    return 0;
    }

    2 :
        
    void printMessage (void)
    {
    printf(“Programming is fun.\n”);
    }
    مثال 1 :
    در این برنامه بعد تعریف تابع اصلی برنامه در داخل پرانتز واژه void استفاده شده و کار اصلی برنامه هم چاپ یک رشته است ! حالا سوالی که اینجا برای من پیش آمده است این است که چرا در داخل پرانتز واژه void به کار رفته است و چرا این برنامه از این واژه استفاده کرده .
    مثال 2 :
    و اما در این مثال باز هم برنامه از واژه void استفاده کرده ، هم در قسمت نوع تابع و هم در قسمت آرگومان تابع! و کار اصلی این برنامه هم چاپ یک رشته است که این وظیفه را به تابع واگذار کرده است . و تابع هم بعد پردازش دستورات ، رشته را به برنامه ی اصلی تحویل می دهد تا برنامه اصلی آن مقدار را چاپ کند !!!
    حال سوال اصلی
    طبق تعریف بالا تابعی که در مثال 2 استفاده شده است عملا نباید مقداری را به برنامه فراخوان تحویل دهد .
    اما بعد از پردازش دستورات ، رشته مورد نظر را به برنامه فراخوان تحویل می دهد و برنامه اصلی هم رشته را چاپ می کند ، با توجه به این تعاریف آیا اصل مقدار void زیر سوال نمی رود ؟
    یا اینکه بنده من درست متوجه نشده ام ... ؟!
    خواهشمند است حقر را راهنمایی بفرمایید .


  2. #2

  3. #3
    کاربر دائمی آواتار m.soleimani
    تاریخ عضویت
    دی 1386
    محل زندگی
    اصفهان
    پست
    639

    نقل قول: تابع و نوع void

    نوشته شده توسط Spentboy دوستان به متن زیر توجه کنید : &quot; اگر تابع هیچ مقداری را به برنامه فراخوان باز نگرداند و فاقد آرگومان باشد ، نوع آن به صورت void تعریف می شود &quot; تعاریف بالا تابع و خصوصا مقدار void را تعریف کرده است . خب حالا به دو مثال زیر توجه کنید : 1 :
     #include <stdio.h> int main (void) { printf (“Programming is fun.\n”); return 0; } 
    2 :
     void printMessage (void) { printf(“Programming is fun.\n”); } 
    مثال 1 : در این برنامه بعد تعریف تابع اصلی برنامه در داخل پرانتز واژه void استفاده شده و کار اصلی برنامه هم چاپ یک رشته است ! حالا سوالی که اینجا برای من پیش آمده است این است که چرا در داخل پرانتز واژه void به کار رفته است و چرا این برنامه از این واژه استفاده کرده . مثال 2 : و اما در این مثال باز هم برنامه از واژه void استفاده کرده ، هم در قسمت نوع تابع و هم در قسمت آرگومان تابع! و کار اصلی این برنامه هم چاپ یک رشته است که این وظیفه را به تابع واگذار کرده است . و تابع هم بعد پردازش دستورات ، رشته را به برنامه ی اصلی تحویل می دهد تا برنامه اصلی آن مقدار را چاپ کند !!! حال سوال اصلی طبق تعریف بالا تابعی که در مثال 2 استفاده شده است عملا نباید مقداری را به برنامه فراخوان تحویل دهد . اما بعد از پردازش دستورات ، رشته مورد نظر را به برنامه فراخوان تحویل می دهد و برنامه اصلی هم رشته را چاپ می کند ، با توجه به این تعاریف آیا اصل مقدار void زیر سوال نمی رود ؟ یا اینکه بنده من درست متوجه نشده ام ... ؟! خواهشمند است حقر را راهنمایی بفرمایید . شما توسط تابع printf یا توابع مشابه در این تابع یه متن را به صورت مستقیم به خروجی استاندارد که در حالت پیش‌فرض نمایش‌گر شماست می‌فرستید و به برنامه فراخوان چیزی را تحویل نخواهید داد چون به صورت صریح با استفاده از کلمه کلیدی void به کامپایلر گفتین که این تابع چیزی را بر نمی‌گرداند در واقع استفاده از این کلمه یک جور محکم کاری برای جلوگیری از اشتباه در فراخوانی تابع به صورت آرگومان دار یا برگشت دهنده هست که البته بسیاری از کامپایلرها خودشون این گونه اشتباهات را گوش‌زد می‌کنن موفق باشید
    کلمه void در تابع اول یعنی این که به تابع main هیچ آرگومانی پاس نمی‌شه و همین کلمه در مثال بعد یعنی این که تابع printMessage هیچ آرگومانی را نمی‌گیرد و هیچ آرگومانی را بر نمی‌گرداند. شما توسط تابع printf یا توابع مشابه در این تابع یه متن را به صورت مستقیم به خروجی استاندارد که در حالت پیش‌فرض نمایش‌گر شماست می‌فرستید و به برنامه فراخوان چیزی را تحویل نخواهید داد چون به صورت صریح با استفاده از کلمه کلیدی void به کامپایلر گفتین که این تابع چیزی را بر نمی‌گرداند در واقع استفاده از این کلمه یک جور محکم کاری برای جلوگیری از اشتباه در فراخوانی تابع به صورت آرگومان دار یا برگشت دهنده هست که البته بسیاری از کامپایلرها خودشون این گونه اشتباهات را گوش‌زد می‌کنن موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •