fork download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. #pragma pack(push, 1)
  5. typedef struct _aaa_t {
  6. uint16_t a;
  7. uint8_t b;
  8. uint8_t c;
  9. uint8_t d;
  10. } aaa_t;
  11. #pragma pack(pop)
  12.  
  13. typedef struct _bbb_t {
  14. uint16_t a;
  15. uint8_t b;
  16. uint8_t c;
  17. uint8_t d;
  18. } bbb_t;
  19.  
  20. int main(void) {
  21. aaa_t a;
  22. aaa_t arr[2];
  23. bbb_t b;
  24. printf("%d\n", sizeof(a));
  25. printf("%d\n", sizeof(b));
  26. printf("%p\n", &(a.a));
  27. printf("%p\n", &(a.b));
  28. printf("%p\n", &(a.c));
  29. printf("%p\n", &(a.d));
  30. printf("%p\n", &(b.a));
  31. printf("%p\n", &(b.b));
  32. printf("%p\n", &(b.c));
  33. printf("%p\n", &(b.d));
  34. printf("sizeof(arr[0])]=%u\n", sizeof(arr[0]));
  35. printf("&arr[0]=%p\n", &(arr[0]));
  36. printf("&arr[1]=%p\n", &(arr[1]));
  37. arr[1].c=1;
  38. arr[1].d=2;
  39. printf("d==%u\n", arr[1].d);
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 5516KB
stdin
Standard input is empty
stdout
5
6
0x7fff643297f3
0x7fff643297f5
0x7fff643297f6
0x7fff643297f7
0x7fff643297f8
0x7fff643297fa
0x7fff643297fb
0x7fff643297fc
sizeof(arr[0])]=5
&arr[0]=0x7fff643297fe
&arr[1]=0x7fff64329803
d==2