اشاره گرها و آرایه ها


اشاره گرها حاوی آدرس اند و اسم آرایه نیز یک آدرس است. اسم آرایه اولین عنصر آرایه را مشخص می کند. اسم آرایه ,آدرس اولین محلی را که عناصر آرایه از آنجا به بعد در حافظه ذخیره می شوند ,نگه داری می کند.

اسم آرایه یک اشاره گر است

مثال:

آرایه های پویا

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

; int *data

همانطور که می دانید این دستور تنها یک اشاره گر تعریف می نماید که در حال حاضر به مکان خاصی اشاره نمی کند.حال باید data را تخصیص حافظه کرد.برای این کار از دو تابع malloc برای تخصیص حافظه و free برای رها سازی آن است.این دو تابع در فایل alloc.h موجود می باشد.

فرض کنید می خواهیم یک آرایه از اعداد صحیح با n عنصر ایجاد کنیم که n یک متغیر صحیح است قطعه برنامه ی زیر این عمل را انجام می دهد:

; int *data

; ((data = (int *) malloc (n * sizeof (int

مثال:

در این برنامه تعداد n متغیر از کاربر پرسیده میشود و به تعداد آن در آرایه p عدد ریخته میشود سپس تمام اعداد چاپ میشوند.

int main(){
	int *p,n;
	scanf("%d",&n);
	p=(int *)malloc(sizeof(int)*n);
	
	for(int i=0;i<n;i++)
	scanf("%d",&*(p+i));
	
	for(int i=0;i<n;i++)
	printf("%d",*(p+i));
}

برای استفاده از آرایه دو بعدی پویا کافیست فقط یک بعد آن را مانند مثال بالا از اشاره گر استفاده کنید و آن را تخصیص حافظه کنید.

1 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخ دهید

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