如何在C中获取结构中成员的大小?
struct A
{
char arr[64];
};
我需要这样的东西:
的sizeof(A :: ARR)
感谢
答案 0 :(得分:38)
sizeof(((struct A*)0)->arr);
简单地说,将空指针强制转换为struct A*
类型,但由于sizeof
的操作数未被评估,这是合法的,并且允许您获取struct成员的大小而不创建实例结构。
基本上,我们假装它的一个实例存在于地址0,可以用于偏移和sizeof
确定。
进一步详细说明,请阅读本文: