PDA

View Full Version : سوال: P* اشاره گر آدرس نگه می دارد یا محتوا؟



complexcoding
پنج شنبه 28 اردیبهشت 1391, 01: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, 01:35 صبح
سلام

عزیز فردا امتحان داری؟ D-:

خط اول آرایه ای رو با ۵ عدد مقدار دهی‌ می‌کنه.

خط ۲ آدرس عدد ۴ در آرایه a رو می‌ریزه در جایی‌ که p به اون اشاره می‌کنه(که این کار منطقی‌ به نظر نمیرسه.)

خط ۵ هم مثل خط ۲ عمل می‌کنه که منطقی‌ نیست خط ۶ هم که یک مقدار دهی‌ ساده هستش.

در مجموع وقتی‌ p رو به عنوانه اشاره گر تعریف می‌کنیم پس خود p حاوی آدرس هستش ولی‌ p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش.

گرفتی‌؟

complexcoding
پنج شنبه 28 اردیبهشت 1391, 01:51 صبح
سلام

عزیز فردا امتحان داری؟ D-:

خط اول آرایه ای رو با ۵ عدد مقدار دهی‌ می‌کنه.

خط ۲ آدرس عدد ۴ در آرایه a رو می‌ریزه در جایی‌ که p به اون اشاره می‌کنه(که این کار منطقی‌ به نظر نمیرسه.)

خط ۵ هم مثل خط ۲ عمل می‌کنه که منطقی‌ نیست خط ۶ هم که یک مقدار دهی‌ ساده هستش.

در مجموع وقتی‌ p رو به عنوانه اشاره گر تعریف می‌کنیم پس خود p حاوی آدرس هستش ولی‌ p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش.

گرفتی‌؟
خط آخر گفتی که "پس خود p حاوی آدرس هستش ولی‌ p* مقداری رو بر میگردونه که آدرسی که در p ذخیره شده حاوی اون مقدار هستش."
پس چرا یه جا P* مساوی محتوا شده a+1 ... اما در جای دیگه P* مساوی آدرس شده ؟!! اینجاش واسم سواله؟

++math
پنج شنبه 28 اردیبهشت 1391, 02: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استفاده می کنند



امیدوارم تونسته باشم منظورمو درست برسونم