加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:39:50 所属栏目:百科 来源:网络整理
导读:#include stdio.hvoid 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[]){ print
#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("%zurn",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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读