اشاره گرها و آرایه ها
اشاره گرها حاوی آدرس اند و اسم آرایه نیز یک آدرس است. اسم آرایه اولین عنصر آرایه را مشخص می کند. اسم آرایه ,آدرس اولین محلی را که عناصر آرایه از آنجا به بعد در حافظه ذخیره می شوند ,نگه داری می کند.
اسم آرایه یک اشاره گر است
مثال:
آرایه های پویا
مشکل آرایه های ایستا در هنگام اجرای برنامه بود که اگر کاربر به فضای بیشتری نیاز داشت این ممکن نبود .اما آرایه های پویا این امکان را فراهم میکند که هرقدر که به فضا نیاز داریم در حین اجرای برنامه اعمال کنیم.برای تعریف یک آرایه پویا، ابتدا باید یک اشاره گر به نوع مورد نظر آرایه تعریف نمود. به عنوان مثال چنانچه بخواهیم ارایه 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)); }
برای استفاده از آرایه دو بعدی پویا کافیست فقط یک بعد آن را مانند مثال بالا از اشاره گر استفاده کنید و آن را تخصیص حافظه کنید.
سلام. مطالبتون بسیار مختصر و مفید بود و برای شروع یادگیری زیان C به من خیلی کمک کرد. با تشکر