#include <stdio.h> #include <stdint.h> #include <inttypes.h> typedef struct { char a; int b; short c; } MyStruct; void print_offsets() { MyStruct myStructure; uintptr_t base_address = (uintptr_t)&myStructure; uintptr_t a_address = (uintptr_t)&myStructure.a - (uintptr_t)base_address; uintptr_t b_address = (uintptr_t)&myStructure.b - (uintptr_t)base_address; uintptr_t c_address = (uintptr_t)&myStructure.c - (uintptr_t)base_address; printf("Offset of a: %" PRIuPTR "\n", a_address); printf("Offset of b: %" PRIuPTR "\n", b_address); printf("Offset of c: %" PRIuPTR "\n", c_address); printf("Size: %" PRIuPTR, a_address + b_address + c_address); } int main() { print_offsets(); return 0; }
Test Cases
Test Results
Input
Expected Output
Offset of a: 0 Offset of b: 4 Offset of c: 8 Size: 12