C - 找出结构的大小

sam*_*sam 5 c pointers structure

我被问到这是面试问题.无法回答.

编写C程序以查找结构的大小而不使用sizeof运算符.

Ben*_*ley 12

struct  XYZ{
    int x;
    float y;
    char z;
};

int main(){
    struct XYZ arr[2];
    int sz = (char*)&arr[1] - (char*)&arr[0];
    printf("%d",sz);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 一个元素(或单个对象)的数组就足够了,因为计算数组的一个接一个地址是合法的. (3认同)
  • @JorgeIsraelPeña:它只取得数组中第一个元素的内存地址(指针)和第二个元素的地址之间的差异. (3认同)