Forward from: KnowledgePlus.ir
نکاتی از زبان برنامه نویسی C:
(شبیه این مطلب در سال های گذشته در یکی از انجمن های برق و الکترونیک قرار داده شده است)
برای مقداردهی مستقیم به آدرس مشخص در حافظه با فرض اینکه برای آن آدرس قابلیت ذخیره سازی وجود داشته باشد، می توان مانند مثال های زیر عمل کرد.
عبارت های زیر معادل با هم هستند و در آدرس 0x200 مقدار 0x98 را ذخیره می کنند:
(*(unsigned char*) 0x200)=0x98;
((unsigned char*) 0x200)[0]=0x98;
عبارت های زیر معادل با هم هستند و با فرض ساختار بایتی برای حافظه از آدرس 0x10002000 به بعد 4 بایت با مقدار 0x0000fe55 را ذخیره می کنند:
(*(unsigned long*) 0x10002000)=0xfe55;
((unsigned long*) 0x10002000)[0]=0xfe55;
همچنین نسبت به یک آدرس پایه می توان offset اعمال کرد. مثلا عبارت زیر یک بایت با مقدار 0x54 را در آدرس 0x206 ذخیره می کند:
((unsigned char*) 0x200)[6]=0x54;
در این روش اگر اشاره گر به بیش از یک بایت اشاره کند، به ازای هر واحد افزایش offset نسبت به آدرس پایه، آدرس مقصد به اندازه تعداد بایت مورد اشاره افزایش پیدا می کند. مثلا عبارت زیر باعث ذخیره سازی 0x54 در آدرس 0x204 و 0x00 در سه بایت بعدی خواهد شد:
((unsigned long*) 0x200)[1]=0x54;
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
(شبیه این مطلب در سال های گذشته در یکی از انجمن های برق و الکترونیک قرار داده شده است)
برای مقداردهی مستقیم به آدرس مشخص در حافظه با فرض اینکه برای آن آدرس قابلیت ذخیره سازی وجود داشته باشد، می توان مانند مثال های زیر عمل کرد.
عبارت های زیر معادل با هم هستند و در آدرس 0x200 مقدار 0x98 را ذخیره می کنند:
(*(unsigned char*) 0x200)=0x98;
((unsigned char*) 0x200)[0]=0x98;
عبارت های زیر معادل با هم هستند و با فرض ساختار بایتی برای حافظه از آدرس 0x10002000 به بعد 4 بایت با مقدار 0x0000fe55 را ذخیره می کنند:
(*(unsigned long*) 0x10002000)=0xfe55;
((unsigned long*) 0x10002000)[0]=0xfe55;
همچنین نسبت به یک آدرس پایه می توان offset اعمال کرد. مثلا عبارت زیر یک بایت با مقدار 0x54 را در آدرس 0x206 ذخیره می کند:
((unsigned char*) 0x200)[6]=0x54;
در این روش اگر اشاره گر به بیش از یک بایت اشاره کند، به ازای هر واحد افزایش offset نسبت به آدرس پایه، آدرس مقصد به اندازه تعداد بایت مورد اشاره افزایش پیدا می کند. مثلا عبارت زیر باعث ذخیره سازی 0x54 در آدرس 0x204 و 0x00 در سه بایت بعدی خواهد شد:
((unsigned long*) 0x200)[1]=0x54;
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus