#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Person {
char c1;
int t1;
char c2;
int t2;
} myPerson;
void test() {
myPerson mp = {1,100,2,200};
/*
编译器对mp结构优化: 内存对齐存储
都会占4个字节
c1 0-3
t1 4-7
c2 8-11
t2 12-15
总共占16个字节
*/
myPerson* p = ∓
printf("直接访问t2:%d\n",mp.t2);
printf("指针访问t2:%d\n",p->t2);
//--------------------------------
char* cp = (char*)p;
printf("转为char指针再转为int指针间接地址访问:%d\n",*(int*)(cp+12));
//-------------------------------------
int* intP = (int*)p;
printf("转为int指针访问:%d\n",*(intP+3));
}
int main() {
test();
return 0;
}
c/c++通过地址偏移访问或修改变量
最新推荐文章于 2023-02-14 16:47:53 发布