مقدار دهی اولیه آرایه | C-style array

انگیزه‌ی من از نوشتن این مطلب مواردی بود که گاهی مشاهده می‌کردم فرد با وجود سال‌ها تجربه این نکات را نمی‌داند و با فرض اشتباه کد می‌زند.

اگر می‌خواهید کل آرایه را با صفر پر کنید، کافی است، یکی از دو راه زیر را انتخاب کنید:

int numbers[5] = {};

یا

int numbers[5] = {0};

اما در نظر داشته باشید با انجام چنین کاری:

int numbers[5] = {1};

آرایه‌ی ما با یک پر نخواهد شد. بلکه تنها عضو اول(اندیس صفر) آن یک می‌شود و سایر اعضا با صفر مقدار دهی می‌شوند.
در اینجا سه عضو اول این مقادیر غیر صفر را می‌گیرند و سایر اعضا به طور خودکار صفر خواهند شد:

int numbers[5] = {1, 2, 3};

اگر بخواهید تنها عضو با اندیس 3 و 4 را مقدار غیر صفر دهید و بقیه را صفر کنید:

int numbers[5] = {[3] = 5,  [4] = 6};

اگر قصد دارید کل اعضا را با مقداری غیر صفر مقدار دهی کنید، یا باید از list initializer به تک تک اعضا مقدار دهید:

int numbers[5] = {7, 7, 7, 7, 7};

یا در کد به کمک حلقه‌ی for اینکار را انجام دهید.
ما می‌توانیم با list initializer حتا سایز آرایه را هم برایش مشخص کنیم. مثلاً

int numbers[] = {7, 7, 7};

در اینجا آرایه ما سایزش به اندازه‌ی 3 المان خواهد بود و اگر به این نکته دقت نکنید ممکن است باعث خرابکاری در برنامه شوید.

نکاتی که در بالا اشاره کردم، وابسته به کامپایلر خاصی نیست و استاندارد است. روش زیر که تنها برای کامپایلر GCC قابل تعریف است باعث می‌شود کد شما غیر استاندارد شود و به شخصه اصلاً اینکار را توصیه نمی‌کنم:

int numbers[] = {[0 . . . 4 ] = 3};

اگر موردی را از قلم انداختم، خوشحال می‌شوم زیر این مطلب بنویسید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *