在c中,我们使用sizeof()
用于获取数据类型的大小。所以
它是如何定义的。它是一个宏或一个函数。
因为我们可以用两种方式来使用它,
sizeof int
and
sizeof(int)
那么这是如何在头文件中定义的。
两者都不是。它是一个内置运算符,其值在编译时计算,除非参数是可变长度数组的名称(在 C99 中添加)。
你经常看到的括号是not“通话”的一部分,因为sizeof
不是一个函数。他们是argument,并且仅当参数是强制转换表达式(即括在括号中的类型名称)时才需要。
我个人推荐against using sizeof
尽可能使用类型名称作为参数,因为通常不需要它,并创建可能导致错误的断开/解耦。
考虑这样的事情:
float *vector = malloc(100 * sizeof(double));
当然,上面的内容包含一个错误:如果float
小于double
,会浪费很多内存。很容易想象最终会得到类似上面的结果,如果vector
一开始是一个数组double
但后来改为float
。为了防止这种情况,我总是这样写:
float *vector = malloc(10 * sizeof *vector);
上面使用了参数*vector
(类型的表达式float
) to sizeof
,即not类型名称,因此不需要括号。它还将元素的大小“锁定”到用于保存它的指针,这更安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)