64,281
社区成员
发帖
与我相关
我的任务
分享
struct a
{
int memb1;
int memb2;
int memb3;
}aa;
这个结构体aa的首地址 是 &aa,那么我该如何获得偏移首地址3的字节的地址呢?
请指教
(int)&aa + 3;
#include <iostream>
#include <cstdio>
using namespace std;
struct a
{
int memb1;
int memb2;
int memb3;
}aa;
int main(void)
{
aa.memb1=10;
aa.memb2=65;
aa.memb3=66; // 10 00 00 00 65 00 00 00 66 00 00 00 结构体里面的数据,十进制
int * ptrInt=(int*)&aa; // ptrInt指向成员memb1 (int型) 10 00 00 00
cout<<ptrInt<<endl;
cout<<*ptrInt<<endl;
char* ptrInt1=(char *)&aa+4; // 结构首地址起偏移4个字节 ptrInt1指向 65开始的字符串
printf("0x%08x,%s\n",ptrInt1,ptrInt1); // 字符串为两个字节,'A' + '\x00'
printf("0x%08x,%c\n",ptrInt1,*(ptrInt1+4)); // 打印ptrInt1+4指向的字符,'B'
return 0;
}
aa.memb1=10;
aa.memb2=20;
aa.memb3=30;
int * ptrInt=(int*)&aa;
cout<<ptrInt<<endl;
cout<<*ptrInt<<endl;
ptrInt=(int*)&aa+2;
cout<<ptrInt<<endl;
cout<<*ptrInt<<endl;
(char*)&aa + 3