Mình xin viết lại code của hoanglinh thành như thế này cho dễ hiểu nhé (Xin phép đổi c = 0x1234):
Ban đầu c là unsigned short chiếm 2 byte trong bộ nhớ với cấu trúc trong bộ nhớ như sau [12][34]. Khi gán b = (a*) &c . Tức là cho b tham chiếu vào c => b là c và c là b => ko có chuyện "ghi vào bộ nhớ theo thứ tự ngược gì hết.Code:#include <stdio.h> #include <conio.h> struct a { char b1; char b2; }; void main() { a *b; unsigned short c = 0x1234; b = (a*) &c; printf("%x\n", b->b1); printf("%x\n", b->b2); getch(); }
Khi đọc b ra, nó sẽ đọc từ phải sang trái. Tức là đọc [34] trước, sau đó mới đọc [12].