#include <stdio.h> void test(int arr[]); int main () { int *arr[3]; int ar1[2] = { 1,2 }; int ar2[3] = { 3,4,5 }; int vla[ar2[1]]; arr[0] = ar1; arr[1] = ar2; arr[2] = vla; for (int i = 0; i < 3; i++) { test(arr[i]); } } void test(int arr[]) { printf("%zu\r\n",sizeof(arr)); }
标题说:这是有效的吗?如果是,有没有办法使test()通过使用sizeof on function参数在数组上输入不同的值?
解决方法
是的,它是有效的,并给出一个int指针的大小(这是arr参数的类型,C中没有数组参数)(以字节为单位). 1
要使用sizeof获取字节数组的大小,该参数必须是实际的数组,而不是指针.
因此,不可能获取作为参数传递给函数的数组的大小,而不传递指定大小的额外参数.
所以,
is there a way to make
test()
output different values by using sizeof on function argument handed in like on array?
没有. (不编辑功能体)
1如果您想知道如何将数组作为指针参数传递,那就是因为隐式的数组到指针转换(称为array decaying).