Code

#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;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

Expected Output

Offset of a: 0 Offset of b: 4 Offset of c: 8 Size: 12