void testSizeof(double array[])
{
printf ("%i\n", sizeof(array));
}
调用此函数时,输出的不是数组的长度。
为什么?
那么,关于输出的事实是什么?
它返回double
指针的大小,即sizeof(double*)
.
当函数接受类型参数时double[]
,这与接受类型参数完全相同double*
。据说该数组衰减为一个指针。
如果函数需要知道数组的大小,则必须显式传递它。例如:
void testSizeof(double array[10]) {...}
或者
void testSizeof(double array[], size_t array_size) {...}
在第一个示例中,数组也受到指针衰减的影响。但是,由于您已经知道数组的大小,因此您不需要使用sizeof()
它来计算它。
不用说,第二种方法比第一种方法灵活得多。