انجمن فرزندان ایران بزرگ
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةدروازهمكتبة الصورجستجوأحدث الصورثبت نامورود

 

 آموزش ویژوال سی و سی شارپ

اذهب الى الأسفل 
نويسندهپيام
Admin
Admin
Admin


تعداد پستها : 1496
تاريخ التسجيل : 2008-11-18

آموزش ویژوال سی و سی شارپ Empty
پستعنوان: آموزش ویژوال سی و سی شارپ   آموزش ویژوال سی و سی شارپ Empty2/2/2009, 06:18

دورد

بازگشت گودزيلا آموزش ویژوال سی و سی شارپ 03

فکر نمی کردم انقدر بشه اما يه غيبت طولانی شد. به هر حال اميدوارم ديگه پيش نياد!!

--------------------------------------------------------

اما بعد...

داشتم فکر می کردم با چی شروع کنم که ياد (...) يا همون Ellipsis افتادم. شايد ديده باشيد که ازش توی برنامه نويسی استفاده کرده باشن و شايد هم به احتمال زياد اصلا نديده باشيد که خوب يه جورايی طبيعی هستش٬ چون کاربرد رايجی نداره و کمتر استفاده ميشه.

(...) رو اصطلاحا ميگن Ellipsis .

کجا ها کاربرد داره ؟

- جاهايی که نمی خوان محدوديتی در تعداد و نوع پارامترهای پاس شده باشه!

مثلا تابع printf رو در نظر بگيريد که يک رشته ورودی بهش پاس می کنيد که می تونه علاوه بر اين رشته٬ يک سری پارامتر دلخواه با هر نوع ممکن رو که دوست داريد در محلی که در رشته مشخص کرديد چاپ بشه٬ رو هم می تونيد به عنوان ورودی بهش پاس کنيد يا نکنيد.

شايد بگيد خب که چی؟!؟!

- اگه يکم دقت کنيد می بينيد که توی تعريف تابع بايد نام و نوع ورودی ها کاملا مشخص و معتبر باشه و تعداد نامحدود عملا نمی تونه داشته باشه!! پس چطوری تابعی مثل printf بنويسيم؟؟آموزش ویژوال سی و سی شارپ 06

اينجاست که Ellipsis ضرورت پيدا ميکنه.

حالا چطوری استفاده ميشه ؟

- خيلی ساده!
شکل کلی تعريف تابع با استفاده از Ellipsis به شکل زير هستش:void MyFunction(int x,...);
البته اين يک نمونه مثال هستش. به کمک x که قبل از ... اومده به آدرس اولين متغيير بعدی پاس شده به تابع بر روی stack دسترسی خواهيم داشت٬ اما اين اصلا ربط مستقيم به نوع و مقدار x نداره و کامپايلر از اين تنها برای دسترسی به متغيير های بعدی استفاده می کنه که اصطلاحا Variable Argument می گن.
ابتدا بايد يک متغيير از نوع va_list تعريف کنيد. بعد بايد از تابع va_start به شکل زير استفاده کنيد:
va_list vl;
va_start( vl, &x);
حالا از طريق متغيير vl به متغييرهای پاس شده دسترسی خواهيد داشت٬ مثلا به شکل زير:
double d;
d = va_arg( vl, double );
خط بالا اولين متغيير رو که فرض کردم double هستش بر می گردونه و برای متغييرهای احتمالی بعدی به همين شکل ادامه پيدا می کنه.
در پايان استفاده بايد تابع va_end رو صدا بزنيد :
va_end( vl );

حالا ديگه به چه شکل دوست داريد استفاده کنید با خودتونه!
اميدوارم به دردتون بخوره!آموزش ویژوال سی و سی شارپ 03
موفق باشيد
بازگشت به بالاي صفحه اذهب الى الأسفل
https://kbirb.4umer.com
 
آموزش ویژوال سی و سی شارپ
بازگشت به بالاي صفحه 
صفحه 1 از 1
 مواضيع مماثلة
-
» آموزش:
» آموزش:
» آموزش xml
» آموزش قدم به قدم هک
» آموزش كامل ويندوز xp

صلاحيات هذا المنتدى:شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد
انجمن فرزندان ایران بزرگ :: تالار کامپیوتر و سیستم های مدیریت وب :: برنامه نويسي-
پرش به: