PDA

View Full Version : راهنمایی در مورد char*



NIMA_1981
یک شنبه 01 اسفند 1389, 19:15 عصر
سلام

دوستان میشه بگید این خط چه کاری رو انجام میدهد .
pc=(char*)ps;



char *pc;
short *ps;
c1='1';
c2='2';
ps=&i;
pc=(char*)ps;

kitten
یک شنبه 01 اسفند 1389, 19:36 عصر
سلام دوست عزیز
نمی دونم کدت کامپایل می شه یا نه ولی مفهومش اینه که متغیر ps که یه اشاره گر از نوع short هست را با استفاده از casting تبدیل به یک اشاره گر از نوع char می کنه و محتویات ps (که ادرس یه خونه از حافظه است) را داخل pc می ریزه

NIMA_1981
یک شنبه 01 اسفند 1389, 19:44 عصر
دقیقا مرسی

یک سوال دیگه

وقتی که از این دستور در کد بالا استفاده میشه
pc++
این به ادرس بعدی اشاره میکنه -اما در حال حاضر وقتی أدرس بعدی وحود نداره شابد وقتی از آرایه استفاده میکنیم بشه روی آرایه با این دستور حرکت کرد اما وقتی آریه نست این به کجا اشاره میکنه ؟

NIMA_1981
یک شنبه 01 اسفند 1389, 19:51 عصر
میشه در این مورد هم راهنمایی کنید

اگه اون بالا مقدار i=10 قرار بدید تا این خط مقدار i درسته اما بعد از این خط ps=&i; مقدار i عوض میشه -توی این خط من مقدار ps رو برابر با آدرس خانه متغییر i میکنم پس چرا مقدار i عوض میشه ؟

kitten
یک شنبه 01 اسفند 1389, 19:57 عصر
دوست عزیز تا اونجایی که بنده اطلاع دارم وقتی شما می نویسی pc++ مسلما pc به یه خونه ای از حافظه اشاره می کنه و حالا وقتی ++ می شه به خونه بعدی حافظه اشاره می کنه
مثلا اگه pc به این ادرس اشاره کنه
AB8763
وقتی pc++میشه به خونه
AB8764 اشاره می کنه
البته چون الان pc از نوع char است یک خونه (بایت) جلوتر می ره ولی مثلا اگر int بود بسته به میزان حجمی که سی پی یو برای ذخیره یه عدد int می گیره که معمولا 2 بایت است جلو می رفت یعنی می شد
AB8765

NIMA_1981
یک شنبه 01 اسفند 1389, 20:14 عصر
میشه دلیل تغییر مقدار i که در پست قبلی نوشتم برام توضیح بدید

kitten
یک شنبه 01 اسفند 1389, 22:29 عصر
سلام دوباره
تا انجایی که من می دونم این بر میگرده به نوع ذخیره سازی متغیرهای مختلف در حافظه
چون نوع ذخیره سازی int با نوع ذخیره سازی short در حافظه فرق می کنه این موجب می شه که مقدارش عوض بشه.
دوستان دیگه اگه دقیق تر می دونند بگند

حامد مصافی
یک شنبه 01 اسفند 1389, 22:44 عصر
در هر تاپیک فقط یک سوال، تاپیک قفل شد!