View Full Version : سوال: P* اشاره گر آدرس نگه می دارد یا محتوا؟
complexcoding
پنج شنبه 28 اردیبهشت 1391, 02:25 صبح
سلام
به این چند نمونه نگاه کنید .
int a[5]={5,4,1,3,0};
*P=a+1;
-------------
int x=40;
int *P=&x;
-------------
char *P="abc";
خلاصه P* آدرس نگه می داره یا محتوا ؟ اصلا به چند حالت مقدار دهی می شه؟
خیلی ممنون
soorena
پنج شنبه 28 اردیبهشت 1391, 02:35 صبح
سلام
عزیز فردا امتحان داری؟ D-:
خط اول آرایه ای رو با ۵ عدد مقدار دهی میکنه.
خط ۲ آدرس عدد ۴ در آرایه a رو میریزه در جایی که p به اون اشاره میکنه(که این کار منطقی به نظر نمیرسه.)
خط ۵ هم مثل خط ۲ عمل میکنه که منطقی نیست خط ۶ هم که یک مقدار دهی ساده هستش.
در مجموع وقتی p رو به عنوانه اشاره گر تعریف میکنیم پس خود p حاوی آدرس هستش ولی p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش.
گرفتی؟
complexcoding
پنج شنبه 28 اردیبهشت 1391, 02:51 صبح
سلام
عزیز فردا امتحان داری؟ D-:
خط اول آرایه ای رو با ۵ عدد مقدار دهی میکنه.
خط ۲ آدرس عدد ۴ در آرایه a رو میریزه در جایی که p به اون اشاره میکنه(که این کار منطقی به نظر نمیرسه.)
خط ۵ هم مثل خط ۲ عمل میکنه که منطقی نیست خط ۶ هم که یک مقدار دهی ساده هستش.
در مجموع وقتی p رو به عنوانه اشاره گر تعریف میکنیم پس خود p حاوی آدرس هستش ولی p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش.
گرفتی؟
خط آخر گفتی که "پس خود p حاوی آدرس هستش ولی p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش."
پس چرا یه جا P* مساوی محتوا شده a+1 ... اما در جای دیگه P* مساوی آدرس شده ؟!! اینجاش واسم سواله؟
++math
پنج شنبه 28 اردیبهشت 1391, 03:08 صبح
خط آخر گفتی که "پس خود p حاوی آدرس هستش ولی p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش."
پس چرا یه جا P* مساوی محتوا شده a+1 ... اما در جای دیگه P* مساوی آدرس شده ؟!! اینجاش واسم سواله؟ دوست عزیز وقتی می نویسیم**P=a+1;
یعنی محتویات جایی که p به ان اشاره می کند را برابر a+1بذار
ولی زمانی که نوشتید int *P=&x;
یعنی pاشارگری هست که ادرس xرا نگه میدارد که نوع متغییر x از int هست
که معمولا اینجوری هم تعریف می کنن
int *p;
p=&x;
چون زمانی*رو قرار می دهند که 2جا هست یه بار زمانی که می خوان اشارگر رو تعریف کنن اعلام می کنند که متغییر از نوع اشارگر هست و یه بار هم زمانی که می خواهند به محتویات اشارگر دسترسی داشته باشن و بتوانند تغییر دهند
و برای اینکه بگن ادرس کدام متغییر رو نگه میداره فقط از مثلا p=&xاستفاده می کنند
امیدوارم تونسته باشم منظورمو درست برسونم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.