又是考查内存对齐和指针理解, 简单东西。【转】

(转自:https://blog.csdn.net/stpeace/article/details/77800139)

 如下: 又是考查内存对齐和指针理解, 简单东西。

#include 
using namespace std;
 
#pragma pack(4)
 
struct X
{
	int a;
	char b[3];
	short c;
	char d[3];
	int e;
	char f;
	char g;
};
 
int main() 
{
    X x;
    X *p = &x;
    
	cout << sizeof(X) << endl;  // 24(最后得符合最宽那个的整数倍)
	
	cout << (char*)(p + 10) - (char*)p << endl;  // 240 = 24*10 - 0
	
	cout << (char*)((int *)p + 10) - (char*)p << endl;  // 40 = 4*10 - 0
	
	cout << (char*)((char *)p + 10) - (char*)p << endl;  // 10 = 1*10 - 0
	
	return 0;
}

不多说!!

--------------------- 
作者:stpeace 
来源:CSDN 
原文:https://blog.csdn.net/stpeace/article/details/77800139 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Linux编程,C/C++)