c - 如何在不使用sizeof的情况下找到变量的大小

标签 c sizeof

让我们假设我已经声明了某种数据类型的变量“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/

相关文章:

c - 函数 strlen 中的警告 - 在 C 中

c++ - 如何通过引用获取对象的大小?

C - 双向链表始终为空

c - C中结构内部的函数指针

java - 将函数指针的 C 结构体转换为 JNA 代码

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

c - C中指针的大小

c++ - 指向非 union 类的指针的大小可以不同吗?

c - 为什么 sizeof(long long) 返回 8?

c - 如何链接 gcc 和 SDL_image 库?