gpt4 book ai didi

c - 数组未正确传递

转载 作者:行者123 更新时间:2023-12-02 21:54:47 26 4
gpt4 key购买 nike

我尝试发送到被调用函数的数组未正确发送。假设我在数组“a”中插入了五个元素,并且使用函数 insert 函数传递数组,并使用以下代码的最后两行检查数组的大小,它显示比数组的实际大小小 1 。为什么会出现这种情况?

void main()
{
//rest of the code
insert(a,key); //user-defined function
}

void insert(int a[],int key)
{
int *p=a;
int n = sizeof(a);
printf("No. of elements entered:%d\n",n);
}

最佳答案

sizeof(a) 只是给你一个指针的大小(以字节为单位)(显然在你的机器上是 4)。一旦将数组传递给函数,就无法确定数组的大小,因为当作为函数参数传递时,数组会衰减为指针。您应该将数组的大小作为单独的参数传递,例如

void insert(int a[], int n, int key)
{
printf("No. of elements entered: %d\n", n);
}

int main()
{
int a[5];

insert(a, 5, key);
}

关于c - 数组未正确传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com