سلام دوستان کسی میدونه این خط کد چکار می کنه؟
اون ستاره اولی ، اشاره گره؟
اشاره گر در اشاره گر شده ، من نفهمیدم چی رو تو چی قرار میده؟
*((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;
سلام دوستان کسی میدونه این خط کد چکار می کنه؟
اون ستاره اولی ، اشاره گره؟
اشاره گر در اشاره گر شده ، من نفهمیدم چی رو تو چی قرار میده؟
*((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;
سلام
یک اشاره گر از نوع unsigned long ایجاد میکنه که به آدرس 0x202FA34D اشاره میکند و در این آدرس مقدار 0x21D4FF6A ذخیره میشود.
این قسمت :آدرس 0x21D4FF6A را به یک اشاره گر از نوع unsigned long تبدیل میکند. و ستاره اولی باعث میشود که مقدار 0x21D4FF6A در آدرس 0x202FA34D ذخیره شود.(volatile unsigned long *)(0x202FA34D)
(:
ممنون از پاسختون ، ولی من نفهمیدم مگه اون ستاره داخل پرانتز باعث نمیشه مقدار 0x21D4FF6A در آدرس 0x202FA34D از فضای حافظه ذخیره بشه؟ خب تا اینجا به ستاره اولی که بیرون پرانتزه نیازی نیست. پس اون ستاره چه نقشی تو این کار داره؟
خواهش میکنم.
اگه ستاره بیرون پرانتز را بردارید معنی عبارت از بین میره. در حقیقت کد شما یک اشاره گر بدون نام ایجاد میکنه و زمانی که ستاره اولی را برداریم :این عبارت را بدین گونه معنی میکنیم : یک اشاره گر از نوع unsigned long ایجاد کن و آدرسی را که آن اشاره گر بدان اشاره میکند را برابر 0x21D4FF6A قرار بده.((volatile unsigned long *)(0x202FA34D))=0x21D4FF6A;
زمانی که شما عمل cast را انجام میدهید در واقع یک اشاره گر ایجاد شده و همانطور که میدانید برای دسترسی به محتوای محلی که اشاره گر بدان اشاره میکند باید پشت آن یک علامت ستاره بگذاریم.
ممنونم از شما
من فکر می کردم علامت ستاره ای که داخله پرانتزه
(volatileunsigned long*)
به محتوای اشاره گر اشاره می کنه ولی طبق فرمایش شما متوجه شدم که فقط یک نوعِ اشاره گر رو تعریف می کنه و اون ستاره بیرونی هست که به محتوای اشاره گر اشاره می کنه.