我有一个结构,如下:
struct DataList
{
int nData;
DataList* pNext;
};用offsetof(DataList, pNext)测出的偏移量是4,而实际应该是1,哪位大虾能帮小弟解释一下的?

解决方案 »

  1.   

    不懂,不懂,不懂
    sizeof(nData) = 4 没问题啊,为什么要是1呢?
      

  2.   

    当然是4,int就是占4个字节的嘛
      

  3.   

    c語言裡面的指針是按照單位長度增加的,即
    int *p;
    p=p+1;// 實際上加了1個int的單位長度(4字節/32位機器)
      

  4.   

    你是不是定义的int的指针类型?然后执行++运算了?如果是的话,就没问题,因为int型指针进行算加后,会按指向数据的大小进行移位的,移一个int型变量的内存大小..也就是4,如果你定义的是字符型指针,才会移1....