Code

/**
 * 63. Struct Padding
 * 
 * You are given a struct with the following fields in order:
 * char a
 * int b
 * short c
 * 
 * Your task is to:
 * Declare a variable of this struct
 * Compute the offset (in bytes) of each field from the base address of the struct (i.e., &s)
 * Print:
 * 
 * Offset of a
 * Offset of b
 * Offset of c
 * 
 * Total size of the struct
 * 
 */


 #include <stdio.h>

typedef struct {
    char a;
    int b;
    short c;
} MyStruct;

void print_offsets() {
    MyStruct s;

    printf("Offset of a: %ld\n", (char*)&s.a - (char*)&s);
    printf("Offset of b: %ld\n", (char*)&s.b - (char*)&s);
    printf("Offset of c: %ld\n", (char*)&s.c - (char*)&s);
    printf("Size: %ld\n", sizeof(s));


}

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