让我们假设我已经声明了某种数据类型的变量“i”(可能是 int、char、float 或 double)......
注意:只需考虑声明了 'i',如果它是 int 或 char 或 float 或 double 数据类型,则不必担心。因为我想要一个通用的解决方案,所以我只是提到变量“i”可以是任何一种数据类型,即 int、char、float 或 double。
现在我可以在没有 sizeof 运算符的情况下找到变量 'i' 的大小吗?
最佳答案
您可以使用以下宏,取自 here :
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var)))
这个想法是使用指针算法(
(&(var)+1)
)来确定变量的偏移量,然后减去变量的原始地址,得到它的大小。例如,如果您有一个 int16_t i
变量位于 0x0002
,您将减去 0x0002
来自 0x0006
,从而得到 0x4
或 4 个字节。但是,我真的没有看到不使用
sizeof
的正当理由。 ,但我相信你一定有一个。
关于c - 如何在不使用sizeof的情况下找到变量的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1393394/