دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۵
  • اسفند

جلسه ۲۷ : آرگومان های متغیر در زبان C

  • دسته‌بندی‌ها :
جلسه ۲۷ : آرگومان های متغیر در زبان C
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. در ادامه به شرح آرگومان های متغیر در زبان C و نحوه پردازش آرگومانها پرداخته. همچنین با ماکروهایی مانند ماکرو va_start در C و ماکرو va_arg آشنا می شویم.

      آرگومان های متغیر در زبان C

      گاهی اوقات، زمانی که می خواهید یک تابع داشته باشید،
      با وضعیتی مواجه می شوید که می تواند چندین آرگومان داشته باشد.
      یعنی از پارامترهایی به جای تعدادی از پارامترهای از پیش تعریف شده استفاده کنید. بعبارتی نیاز باشد تابعی بنویسید که تعداد آرگومان های آن مشخص نباشد.
      زبان برنامه نویسی C یک راه حل برای این وضعیت را فراهم می کند. در اینصورت،
      شما مجاز به تعریف یک تابع هستید که می تواند پارامتر متغیری را براساس نیاز شما بپذیرد. یعنی تعداد آرگومان های آن مشخص نباشد.
      مثال زیر نشانگر تعریف چنین تابعی می باشد.

      مثال : 

      لازم به ذکر است آخرین آرگومان تابع()fun آرگومان ellipses است. یعنی سه تا نقطه(…).
      قبل از سه نقطه همیشه باید یک int به عنوان اولین آرگومان باشد. این آرگومان تعداد آرگومان هایی که به تابع ارسال می شوند را مشخص می کند.
      برای استفاده از چنین قابلیتی، شما باید از هدر فایل  stdarg.h استفاده کنید.

      در زیر مراجل مربوط به نحوه پردازش این آرگومان ها را مشاهده می کنید:

      • یک تابع تعریف کنید که آخرین آرگومان آن (…) باشد. همیشه قبل از (…) یک متغیر از نوع int تعریف کنید که نشان دهنده تعداد آرگومان ها است.
      • یک متغیراز نوع va_list در داخل تابع تعریف کنید. این نوع داده در فایل هدر h تعریف شده است.
      • از پارامتر int و ماکرو va_start برای مقدار دهی متغیر va_list استفاده کنید. ماکرو va_start در فایل هدر h تعریف شده است.
      • برای دسترسی به لیست آرگومان ها از ماکرو va_arg و متغیر va_list استفاده کنید.
      • از ماکرو va_end به منظور پاکسازی متغیر va_list از حافظه استفاده کنید.

      با استفاده از مراحل فوق یک تابع ساده می نویسیم که می تواند تعدادی آرگومان بگیرید. سپس میانگین آن ها را بازگرداند:

      مثال : 

      وقتی کد بالا کامپایل و اجرا می شود، نتیجه زیر را تولید می کند.

      لازم به ذکر است که تابع average () دو بار فراخوانی شده است.

      در هر دو بار اولین آرگومان نشان دهنده تعداد آرگومان های ارسال شده است. برای انتقال تعداد آرگومانهای متغیر از سه نقطه استفاده می شود.

      مثال : 

      کلام پایانی

      در این جلسه توضیحاتی در مورد آرگومان های متغیر در زبان C داشتیم.

      با ماکرو va_start در C و ماکرو va_arg آشنا شدیم.

      و مدیریت حافظه در زبان C رو جلسه بعد آغاز خواهیم نمود.

      QR:  جلسه ۲۷ : آرگومان های متغیر در زبان C
      به اشتراک بگذارید