#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
struct mst
{
int *a;//对齐,扩展为8字节
double f;
int *b;
int *c;
};
int main()
{
mst st;
int array1[2]= {1,2};
int array2[3]= {3,4,5};
int array3[2]= {6,7};
st.a=array1;
st.b=array2;
st.c=array3;
int **addr=(int**)&st;
cout<<addr[0][1]<<endl;
cout<<addr[4][0]<<endl;//4个整数偏移量。a对齐后8字节,f也是8字节,共16个字节,4个32位。
cout<<addr[5][1]<<endl;
/*cout<<"oa="<<offsetof( mst, a )<<endl; //0
cout<<"of="<<offsetof(mst,f)<<endl; //8
cout<<"ob="<<offsetof(mst,b)<<endl; //16
cout<<"oc="<<offsetof(mst,c)<<endl; //20*/
cout<<"size of object:"<<sizeof(mst)<<endl;
system("pause");
return 0;
}
关于二级指针
最新推荐文章于 2021-01-22 22:22:50 发布