PDA

View Full Version : سوال: تفاوت *p با p* چیه؟



idocsidocs
دوشنبه 14 فروردین 1391, 09:36 صبح
تفاوت *p با p* چیه؟

mhabat
دوشنبه 14 فروردین 1391, 13:06 عصر
سلام.دوست میشه یک مثال بزنی که توش بعد ازpعملگر*باشه؟به عبارتی پسوند باشه؟...!
شاید ضرب بوده...!

Ananas
دوشنبه 14 فروردین 1391, 16:08 عصر
سلام.
برای تعریف نوع اشاره گر به شی یا انواع اولیه در برنامه از ستاره در سمت راست اون شی یا نوع اولیه استفاده میکنن و به معنی : نوع اشاره گر، به شی یا نوعی هست که در سمت چپ ستاره نوشته میشه.
وقتی می خوایم به محتویات یک اشاره گر دسترسی پیدا کنیم میتونیم از ستاره در سمت چپ اشاره گر استفاده کنیم و به در واقع با ستاره در سمت چپ میتونیم از اشاره گر به شی به عنوان یک نوع از اون شی استفاده کنیم.
مثال :

float *pf;
pf = new float;
*pf = 3.14159265f;
float f = 2 * *pf;
int *pint = (int *)pf;

خط به خط :
_____
float *pf;
اشاره گری از نوع float یعنی عبارت float و یک ستاره سمت راستش. یعنی نوعی از :
float *
در اینجا نگید ستاره سمت چپ pf هست بلکه بگید ستاره سمت راست float هست.
_____
pf = new float;
تخصیص حافظه به مقدار سایز float یعنی 32 بیت و قرار دادن آدرس اون در اشاره گر.
_____
*pf = 3.14159265f;
محتویات حافظه ی گرفته شده که اشاره گر به اون اشاره میکنه رو برابر عدد 3.14159265 قرار بده.
_____
float f = 2 * *pf;
متغری از جنس float را برابر 2 ضرب در محتویات حافظه اشاره شده یعنی 3.14159265 قرار بده.
_____
int *pint = (int *)pf;
اشاره گر به float رو به شکل اشاره گر به int در متغیر pint قرار بده. یعنی با استفاده از :
*pint
می تونیم به محتویات pf به عنوان عدد صحیح دسترسی داشته باشیم و بیت ها ی اون رو هم میتونیم دستکاری کنیم.