数组 C

问题描述

考虑行 <type> array[SIZE_OF_ARRAY];。稍后我需要使用此数组元素的大小(即 fwrite)。但是我将来可能会更改 <type>,因此不能有固定大小。我找到的解决方案是使用 sizeof(array[0])。虽然它适用于我的情况,但感觉不是很漂亮,如果数组可能为空,它会遇到问题。有没有更好的选择?

解决方法

如果数组可以为空。有没有更好的选择?

数组不能为空。它可以是未初始化的。尽管如此这个表达

sizeof(array[0])

在任何情况下都是有效的,因为在无法访问内存的意义上,操作数是未计算的表达式(尽管如果 array[0] 反过来是可变长度数组,则可以在运行时计算表达式本身) .

另一种表达方式可能是这样的

sizeof( *array )

您可以使用任何一种表达方式来达到相同的效果。