让我们假设我已经声明了某些数据类型的变量“i”(可能是int、char、float或double) .
注意:只是考虑'i‘是声明的,如果它是int、char、float或double数据类型,就不用麻烦了。因为我想要一个通用的解决方案,我只是简单地提到变量'i‘可以是任意一种数据类型,即int、char、float或double。
现在,我可以找出变量'i‘的大小没有相当大的运算符吗?
发布于 2009-09-08 11:13:53
您可以使用以下宏,摘自这里
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var))) 其思想是使用指针算法((&(var)+1))确定变量的偏移量,然后减去变量的原始地址,得到变量的大小。例如,如果int16_t i变量位于0x0002,则将从0x0006中减去0x0002,从而获得0x4或4个字节。
但是,我认为不使用sizeof并不是一个合理的理由,但我相信您必须有一个理由。
发布于 2009-09-08 11:16:47
我已经很久没有编写任何C代码了,而且我从来不擅长它,但这看起来是正确的:
int i = 1;
size_t size = (char*)(&i+1)-(char*)(&i);
printf("%zi\n", size);我相信有人可以告诉我为什么这是错误的理由,但它给我打印了一个合理的价值。
发布于 2014-10-21 02:06:51
这很管用..。
int main() {
int a; //try changing this to char/double/float etc each time//
char *p1, *p2;
p1 = &a;
p2 = (&a) + 1;
printf("size of variable is:%d\n", p2 - p1);
}https://stackoverflow.com/questions/1393394
复制相似问题