这个代码是否使用sizeof运算符定义好了?

前端之家收集整理的这篇文章主要介绍了这个代码是否使用sizeof运算符定义好了?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#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).

原文链接:https://www.f2er.com/c/114098.html

猜你在找的C&C++相关文章