PDA

View Full Version : نام آرایه



Dream Walker
یک شنبه 02 آبان 1395, 16:55 عصر
دوستان ، استادان سلام.

در بحث اشارگر ها به یه مشکلی خوردم.
من میدونم که اسم آرایه اشارگری ثابت به اولین عنصر آرایه است.
مثلا اگر داشته باشیم:
int arr[5] = { 10,20,30,40,50 };
شروط زیر برقرار اند:
arr == &arr[0]
*arr == arr[0]

آدرس اشاره گر arr هم با آدرس اولین عنصر آرایه arr یکی هست.
ولی چرا مقدار arr با مقدار arr[0] برابر نیست؟ چطور تو یه خانه حافظه هم اشاره گر وجود داره و هم مقدار int؟؟؟؟
اسم آرایه که یک اشاره گر هست و آدرس اولین عنصر آرایه رو یدک میکشه با اولین عنصر آرایه که میتونه هر type داشته باشه از int گرفته تا double و .... چطور آدرس حافظشون یکی هست؟



تشکر

Dream Walker
یک شنبه 02 آبان 1395, 17:01 عصر
یک جواب احتمالی به ذهنم رسید:
اسم آرایه که یک اشارگر هست در stack و خود آرایه در heap قرار میگیره.
این درست است؟ برابر بودن آدرس حافظه اولین عنصر آرایه با اسم آرایه رو توجیه میکنه؟

Ananas
پنج شنبه 06 آبان 1395, 14:11 عصر
سلام.

آدرس اشاره گر arr هم با آدرس اولین عنصر آرایه arr یکی هست.
نخیر. مقدار اشاره گر arr (این مقدار یک آدرس را نشون میده) با آدرس اولین خانه برابر است. آدرس خوده arr چیز دیگه ایه.