如何在C中获取结构中成员的大小?
struct A
{
char arr[64];
};
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西:
的sizeof(A :: ARR)
谢谢
wkl*_*wkl 41
sizeof(((struct A*)0)->arr);
Run Code Online (Sandbox Code Playgroud)
简而言之,将一个空指针强制转换为类型struct A*,但由于操作数sizeof未被计算,这是合法的,并且允许您在不创建结构实例的情况下获取struct成员的大小.
基本上,我们假装它的一个实例存在于地址0并且可以用于偏移和sizeof确定.
要进一步阐述,请阅读本文: