زبان برنامه نویسی سی/دستور return: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جزبدون خلاصۀ ویرایش
جزبدون خلاصۀ ویرایش
خط ۳۱:
به غیر از تابع main هر تابعی باید قبل از استفاده ، تعریف شود ( definition ) تا تعیین کند که تابع چه ورودی‌هایی می‌گیرد که برای تابع به عنوان پارامتر ( parameter ) در مقابل شناسه و نام تابع ، داخل یک جفت پرانتز باز و بسته نوشته می‌شوند ( مثل int func1(int a, int b) ) که پارامترها را نیز با عملگر کاما ( در پارسی به معنی ویرگول ) باید از یکدیگر جدا کنید و سپس معمولاً پردازش‌هایی را بر روی پارامترها انجام می‌دهید و در نهایت با دستور return مشخص می‌کنید که تابع چه خروجی‌ای می‌دهد . تابع ، زمانی که تعریف شد باید همانند متغیرها بدون نوع داده نوشته شود که به این کار فراخوانی call تابع و یا احضار invoke آن می‌گوئیم و اگر پارامتری دارد ، داده یا داده‌هایی به تعداد پارامترهای تابع به آن اصطلاحاً پاس داده شود ( pass ) یا به اصطلاحی دیگر ارجاع داده شود ( referencing ) تا تابع همان طور که تعریف شده پردازش‌هایی را بر روی آن داده‌ها که در مقابل تابع هنگام احضار نوشته شده‌اند ( به اضطلاح آرگومان Argument ) انجام دهد و خروجی‌‌ای را تحویل دهد که می‌تواند در یک متغیر یا داده دیگر ذخیره شود و یا اصلاً خود به عنوان آرگومان به یک تابع دیگر پاس داده شود ( و این از قدرت‌های زبان C است ) . در تعریف تابع خروجی را با دستور return تعیین می‌کنیم . اما گاهی تابع را در جایی دیگر تعریف می‌کنیم و پیش از تعریف تابع از آن استفاده کرده و به اصطلاح آن را فراخوانی و احضار می‌کنیم که در این صورت ، حتماً باید پیش از استفاده ؛ تابع را اعلان و به اصطلاح prototype کنیم که نوع داده تابع و پارامترهای آن یک به یک و به ترتیب باید با تعریف آن یکسان باشند . همچنین شما می‌توانید یک تابع را به عنوان مقدار یک متغیر ، احضار کنید تا خروجی تابع در متغیر ذخیر شود و پردازشی را بر روی آن متغیر انجام دهید ضمن اینکه تابع‌ها حوزه سراسری دارند و می‌توانید یک تابع را داخل تابعی دیگر احضار و فراخوانی کنید ولی نمی‌توانید ، تابعی را داخل تابعی دیگر تعریف کنید
 
تابع می‌تواند پارامتری نداشته باشد ؛ که در این صورت مجاز نیستیم تا داده‌ای را به عنوان آرگومان با تابع پاس بدهیم در غیر این صورت ، کامپایلر از ما خطا خواهد گرفت . ضمن اینکه گاهی برای جلوگیری از کد زدن اضافه ، مجموعه‌ای از حکم‌ها را داخل تابع می‌نویسیم تا با هر بار احضار آن تابع آن حکم‌ها به اجرا گذاشته شوند . '''دقت کنید''' تعداد آرگومان‌هایی که به تابع پاس داده می‌شودمی‌شوند و نوع داده آنها حتماً باید با نوع داده در تعریف پارامترهای تابع به ترتیبی که تعریف شده‌اند و تعداد آن‌ها یکی باشد که البته شما می‌توانید پارامترهای تابع را طوری تعریف کنید که بی‌شمار آرگومان پذیرا باشند که در فصل بعدی به آن می‌پردازیم و نیازمند استفاده از فایل سرآیند مرتبط به خود است که در مباحث مربوطه ، مفصلاً به آنها خواهیم پرداخت
 
طبق استاندارد نوعی که دستور return باز می‌گرداند باید با نوع داده تابع یکی باشد در غیر این صورت ممکن است با خطای کامپایلر مواجه شوید ولی برخی از کامپایلرها نوع داده‌ها را تبدیل و cast می‌کنند ( مراجعه کنید به تبدیل و جایگزینی داده‌ها ) و یا در صورت همخوانی نوع داده‌ها ولی بزرگ‌تر بودن مقدار خروجی از نوع داده تابع ، بزرگ‌ترین مقداری که در آن نوع داده تابع قابل ذخیره است به عنوان مقدار خروجی ، تعیین می‌کنند . ضمن اینکه شما با نوشتن کدهایی می‌توانید از داده‌های خیلی بزرگ هم استفاده کنید که برنامه‌های نوشته شده و آماده آن نیز در فضای وب موجود است