TGViewer
CleverDevs CleverDevs @cleverdevs · 10.9K subscribers
Post #2622 4.6K
یکی از مفاهیم جالبی که توی زبان C دیدم، نحوه ارسال آرایه‌ها به توابع هست.
​وقتی یک متغیر عادی رو به تابع می‌فرستیم، یک کپی از مقدارش ساخته میشه. اما در مورد آرایه‌ها، زبان C برای جلوگیری از کپی شدن داده‌های حجیم و افت سرعت برنامه، تنها آدرس اولین عنصر آرایه در حافظه رو به تابع ارسال می‌کنه.
​به زبان ساده‌تر، تابع جدید به همون آرایه اصلی دسترسی پیدا می‌کنه. بنابراین، هر تغییری که روی آرایه در داخل تابع انجام بدیم مستقیماً روی آرایه اصلی اعمال میشه.

مثلا
#include <stdio.h>

void modifyArray(int arr[]) {
arr[0] = 99;
}

int main() {
int numbers[3] = {1, 2, 3};

modifyArray(numbers);

printf("First element: %d\n", numbers[0]);
// output : 99

return 0;
}



یه نکته‌ای هم هست که بهش Array Decay میگن.
​از اونجا که آرایه هنگام ارسال به تابع، صرفاً به یک آدرس (pointer) تبدیل میشه، ماهیت اصلی خودش رو به عنوان مجموعه‌ای با طول مشخص از دست میده و تابع گیرنده سایز اونو نمی‌دونه.
​اگر در داخل تابع از دستور sizeof استفاده کنیم، به جای حجم کل آرایه، تنها حجم یک پوینتر نمایش داده میشه. به همین دلیل توی زبان C، همیشه باید طول آرایه رو هم در زمان فراخوانی محاسبه کنیم و به عنوان یک آرگومان جداگانه به تابع بفرستیم:

void printArray(int arr[], int size) {
for(int i = 0; i < size; i++) {
printf("%d\n", arr[i]);
}
}


#c
@CleverDevs - @CleverDevsGp
  • ❤ 28
  • 👍 9
  • 🆒 2
  • 👎 1
  • 👌 1
More from @cleverdevs
  1. Sep 24, 2026شرکت کوالکام اعلام کرده قرار هست پشتیبانی رسمی لپتاپهای مجهز به چیپ Snapdragon X2 از لینوک…
  2. Sep 23, 2026توی کدای کرنل برای سیستم‌کال reboot شما باید دوتا magic value به تابع بدید تا کرنل برای ای…
  3. Sep 21, 2026یه نفر اومده و یه موزیک پلیر لینوکس به اسم sung با cpp و qt نوشته که طراحی زیبا و ویژگی ها…
  4. Sep 18, 2026خب اومدم یک پست شبانه بذارم و برم تا چند روز دیگه که با یک محتوای خوب برگردم :3 براتون سوا…
  5. Sep 14, 2026بیرجند لاگی ها توی روز برنامه نویس یه چلنج باحال دیگه داشتن: چلنج فشرده سازی! (: توی این ر…
  6. Sep 13, 2026روزتون مبارک https://en.wikipedia.org/wiki/Programmer%27s_Day @CleverDevs - @CleverDevsGp
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →