آرایه : محلی برای ذخیره چند متغیر یکسان که تعدادشون ثابته .
اندیس آرایه ها از صفر شروع میشه تا یکی مونده به تعداد .
ساخت آرایه
type arr_name[ arr_size];
مثلا
int a[3]
مقدار دهی
مقدار دهی به آرایه رو میشه هم موقع تعریف انجام داد هم بعد از تعریف
int a[3]={2,1,4};
for(int i=0;i<3;i++)
a[i]=i;
a[2]=12;
,....
خوندن اطلاعات از ارایه :
arr_name[index];
مثلا
int temp=a[2];
گرفتن حافظه برای آرایه زمان اجرا
توی روش هایی که در بالا گفتم برای ساختن آرایه باید قبل از کامپایل کد سایز آرایه مشخص باشه
برای این که آرایه رو زمان اجرای برنامه اندازشو بگیری باید به این شکل عمل کنی :
type *arr_name=(type*)malloc(sizeof(type)*arr_size);
کاری که malloc میکنه اینه که به اندازه پارامتر ورودیش که یک عدد هست برای ما حافظه میگیره sizeof(type)*arr_size
و از اون جایی که حافظه ای که بر میگردونه از نوع void* هست قبل از گزاشتن داخل arr_name باید تبدیل بشه به type* ( پرانتز قبل از (malloc
نکته ای که هست بعد از استفاده از آرایه ای که با malloc براش حافظه گرفته شده باید اون رو پاک کرد با free
free(arr_name);
مقدار اولیه دادن به این آرایه هم مثل قبله
البته یک راه سریعتر هم برای مقدار 0 دادن به کل آرایه می تونه استفاده از memsetباشه
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main()
{
const int SIZE=5;
int *a=(int*)malloc(sizeof(int)*sz);
memset(a,0,sizeof(int)*SIZE);
for(int i=0;i<sz;i++)
printf("%d\n",a[i]);
return 0;
ارسال آرایه 1 بعدی به تابع
به یکی از 2 شکل زیر می تونی عمل کنی
void func(int arr[],const int SIZE)
{
}
// ya
void func(int *arr,const int SIZE)
{
}
//estefade :
int a[4];
func(a,4);
آرایه 2 بعدی :
آرایه 2 بعدی یعنی یک آرایه یک بعدی که داخل هر خونش یک آرایه یک بعدی دیگه قرار داره ( به صورت یک جدول هم میشه در نظر گرفت )
شکل زیر نشون دهنده یک آرایه 2 بعدیه 3*5 هستش .
ساختن آرایه 2 بعدی :
type arr_name[rows][cols];
مثلا شکل بالا تعریفش به این شکل میشه :
int a[5][3];
مقدار اولیه دادن به آرایه 2 بعدی :
برای مثدار دادن هم کاری که باید انجام بشه شبیه همون آرایه یک بعدیه
int a[2][3]={{2,1,3},{3,5,7}};
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
a[i][j]=3;
}
a[1][2]=32;
a[0][0]=11;
a[0][2]=2;
....
:
گرفتن حافظه برای آرایه 2 بعدی زمان اجرا :
int **a;
a=(int**)malloc(sizeof(int*)*4);
for(int i=0;i<4;i++)
{
a[i]=(int*)malloc(sizeof(int)*2);
}
کد بالا یک آرایه 4*2 میسازه .
چون از malloc استفاده شده بعد از اسفاده از آرایه باید آرایه پاک هم بشه به این شکل :
پاک کردن :
for(int i=0;i<4;i++)
{
free(arr_name[i]);
}
free(arr_name);
ارسال به تابع :
void func(int arr[][5],const int rows)
{
}
// ya
void func(int **arr,const int rows,const int cols)
{
}
لینک های مرتبط :
http://www.7khatcode.com/search?q=%D8%A2%D8%B1%D8%A7%DB%8C%D9%87