问题描述
考虑行 <type> array[SIZE_OF_ARRAY];
。稍后我需要使用此数组元素的大小(即 fwrite
)。但是我将来可能会更改 <type>
,因此不能有固定大小。我找到的解决方案是使用 sizeof(array[0])
。虽然它适用于我的情况,但感觉不是很漂亮,如果数组可能为空,它会遇到问题。有没有更好的选择?
解决方法
如果数组可以为空。有没有更好的选择?
数组不能为空。它可以是未初始化的。尽管如此这个表达
sizeof(array[0])
在任何情况下都是有效的,因为在无法访问内存的意义上,操作数是未计算的表达式(尽管如果 array[0]
反过来是可变长度数组,则可以在运行时计算表达式本身) .
另一种表达方式可能是这样的
sizeof( *array )
您可以使用任何一种表达方式来达到相同的效果。