@luong2 wrote:
và mọi người cho e hỏi luôn đoạn code này
#include<stdint.h> struct packet { uint8_t crc; //1 byte uint8_t status; //1 uint16_t payload; //2 uint8_t bat; //1 uint8_t sensor; //1 uint8_t lastAddr; //1 }; int main() { struct packet packet; printf("%#X \n", (unsigned int)&packet.crc); printf("%#X \n", (unsigned int)&packet.status); printf("%#X \n", (unsigned int)&packet.payload); printf("%#X \n", (unsigned int)&packet.bat); printf("%#X \n", (unsigned int)&packet.sensor); printf("%#X \n", (unsigned int)&packet.lastAddr); printf("size of struct is %I32u", sizeof(packet)); getchar(); return 0; }
Tại sao struct kia lại 8 byte ạ. E nghĩ do thằng cuối cùng bị padding thêm 1 byte. Do compiler nó ko đặt đc thêm biến vào địa chỉ lẻ sau cái thằng cuối cùng. Thế nên nó padding thêm 1 byte đấy. Để khi cấp phát tiếp nó vào địa chỉ chẵn
Posts: 2
Participants: 2