比方说我有一个数据类型,X我想知道它的大小而不声明该类型的变量或指针,当然不使用sizeof运算符.
这可能吗?我想过使用标准头文件,其中包含数据类型的大小和范围,但不适用于用户定义的数据类型.
CB *_*ley 43
在我看来,这符合"如何在不使用++,+ =或+?"的情况下添加两个整数的类别.这是浪费时间.你可以尝试通过做这样的事情来避免未定义行为的怪物.
size_t size = (size_t)(1 + ((X*)0));
Run Code Online (Sandbox Code Playgroud)
请注意,我没有声明类型或指针的变量X.
dmc*_*kee 12
看,这sizeof 是语言设施.唯一的,所以它是实现这一目标的唯一便携方式.
对于某些特殊情况,您可以生成不可移植的代码,使用其他启发式来了解特定对象的大小[*](可能通过让它们跟踪自己的大小),但您必须自己完成所有的簿记.
[*]对象在一般意义上而不是OOP意义上.
小智 10
好吧,我是一个业余爱好者..但我尝试了这个问题,我得到了正确的答案,没有使用sizeof.希望这会有所帮助..我试图找到一个整数的大小.
int *a,*s, v=10;
a=&v;
s=a;
a++;
int intsize=(int)a-(int)s;
printf("%d",intsize);
Run Code Online (Sandbox Code Playgroud)