#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));
}
正如标题所说:这有效吗?如果是这样,是否有办法通过对函数参数使用 sizeof
来使 test()
输出不同的值,就像在数组上一样?
最佳答案
是的,它是有效的,并将给出一个 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 .
关于c - 这段代码是否使用 sizeof 运算符定义得很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34772313/