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