PDA

View Full Version : سوال: کسی میدونه این خط کد چی کار می کنه؟



iltsaetsi
جمعه 20 شهریور 1394, 15:47 عصر
سلام دوستان کسی میدونه این خط کد چکار می کنه؟
اون ستاره اولی ، اشاره گره؟
اشاره گر در اشاره گر شده ، من نفهمیدم چی رو تو چی قرار میده؟
*((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;

reza_noei
جمعه 20 شهریور 1394, 17:20 عصر
سلام دوستان کسی میدونه این خط کد چکار می کنه؟
اون ستاره اولی ، اشاره گره؟
اشاره گر در اشاره گر شده ، من نفهمیدم چی رو تو چی قرار میده؟
*((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;

سلام

یک اشاره گر از نوع unsigned long ایجاد میکنه که به آدرس 0x202FA34D اشاره میکند و در این آدرس مقدار 0x21D4FF6A ذخیره میشود.
این قسمت :
(volatile unsigned long *)(0x202FA34D)

آدرس 0x21D4FF6A را به یک اشاره گر از نوع unsigned long تبدیل میکند. و ستاره اولی باعث میشود که مقدار 0x21D4FF6A در آدرس 0x202FA34D ذخیره شود.
(:

iltsaetsi
شنبه 21 شهریور 1394, 16:45 عصر
ممنون از پاسختون ، ولی من نفهمیدم مگه اون ستاره داخل پرانتز باعث نمیشه مقدار 0x21D4FF6A در آدرس 0x202FA34D از فضای حافظه ذخیره بشه؟ خب تا اینجا به ستاره اولی که بیرون پرانتزه نیازی نیست. پس اون ستاره چه نقشی تو این کار داره؟

reza_noei
شنبه 21 شهریور 1394, 23:30 عصر
ممنون از پاسختون ، ولی من نفهمیدم مگه اون ستاره داخل پرانتز باعث نمیشه مقدار 0x21D4FF6A در آدرس 0x202FA34D از فضای حافظه ذخیره بشه؟ خب تا اینجا به ستاره اولی که بیرون پرانتزه نیازی نیست. پس اون ستاره چه نقشی تو این کار داره؟

خواهش میکنم.
اگه ستاره بیرون پرانتز را بردارید معنی عبارت از بین میره. در حقیقت کد شما یک اشاره گر بدون نام ایجاد میکنه و زمانی که ستاره اولی را برداریم :
((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;

این عبارت را بدین گونه معنی میکنیم : یک اشاره گر از نوع unsigned long ایجاد کن و آدرسی را که آن اشاره گر بدان اشاره میکند را برابر 0x21D4FF6A قرار بده.
زمانی که شما عمل cast را انجام میدهید در واقع یک اشاره گر ایجاد شده و همانطور که میدانید برای دسترسی به محتوای محلی که اشاره گر بدان اشاره میکند باید پشت آن یک علامت ستاره بگذاریم.

iltsaetsi
یک شنبه 22 شهریور 1394, 01:13 صبح
ممنونم از شما
من فکر می کردم علامت ستاره ای که داخله پرانتزه
(volatile unsigned long *)
به محتوای اشاره گر اشاره می کنه ولی طبق فرمایش شما متوجه شدم که فقط یک نوعِ اشاره گر رو تعریف می کنه و اون ستاره بیرونی هست که به محتوای اشاره گر اشاره می کنه.