C 面试题

yubo-guan / 2024-01-18 / 原文

目录
  • 地址转换问题
  • 指针地址的使用


地址转换问题

#include <iostream>
using namespace std;

int main() {
    char test[8] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
    int *test_p = (int *)test;
    int a = test_p[0];
    printf("ox%X", a);
    return 0;
}
/*
ox4030201
*/

指针地址的使用

#include <iostream>
using namespace std;

struct Test {
    int Num;
    char *pcName;
    short sDate;
    char cha[2];
    short sBa[4];
} *p;

int main() {
    Test t;
    p = (struct Test *)&t;
    printf("sizeof(Test) = %d\n", sizeof(Test));
    printf("%X\n", p);
    printf("%X\n", p + 0x1);
    printf("%X\n", (unsigned long*)p + 0x1);
    printf("%X\n", (unsigned int*)p + 0x1);
    return 0;
}
/*
sizeof(Test) = 32
61FE00
61FE20
61FE04
61FE04
*/