代码:
// gcc -Wall -o t t.c 
#include <stdio.h>
#include <stddef.h>
struct Person {
    char name[50];
    int age;
    double score;
};
int main() {
    // 获取结构体成员的偏移量
    size_t offset_name = offsetof(struct Person, name);
    size_t offset_age = offsetof(struct Person, age);
    size_t offset_score = offsetof(struct Person, score);
    printf("Offset of name: %zu\n", offset_name);
    printf("Offset of age: %zu\n", offset_age);
    printf("Offset of score: %zu\n", offset_score);
    struct Person prsn = {"Lilei", 12, 99}  ;
    char * name = (char *)((char*)&prsn + offset_name) ;
    int * age= (int*)((char*)&prsn + offset_age) ;
    double * score = (double *)((char*)&prsn + offset_score) ;
    printf("name  : %s\n", name) ;
    printf("age   : %d\n", *age) ;
    printf("score : %f\n", *score) ;
    return 0;
}
测试:



发表回复