gpt4 book ai didi

c - sizeof() 如何通过引用参数传递

转载 作者:行者123 更新时间:2023-12-02 21:31:16 25 4
gpt4 key购买 nike

我将一个数组传递给函数并尝试查找该数组的长度。但结果却出乎意料。有人可以解释一下吗?

int main()
{
int array[10]={0};
func(array);
return 0;
}
void func(int arr[])
{
printf("length of an array is %d ",(sizeof(arr)/sizeof(arr[0]));
}

给出答案2。当我在 main 函数中尝试相同的操作时,它工作正常(答案是 10)。//在linux中使用gcc编译器

最佳答案

在我看来,这个结果是因为 sizeof(arr) == 8 (PC 上指针的大小)和 sizeof(arr[0]) == 4 因为它是一个整数,因此 8/4==2

此声明:void func(int arr[]) 告诉函数期望指向 int 的指针作为参数。

我不清楚是否可以通过引用计算数组的size。接受数组引用作为参数的 C 函数总是倾向于接收它们的长度作为参数。

main() 函数的区别在于 main 内部的 array 变量的类型为 int[10],因此 sizeof 能够获取其以字节为单位的长度。在 func 中,arr 的类型为 int*,因此 sizeof 仅给出指针的长度(以字节为单位)。

关于c - sizeof() 如何通过引用参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247318/

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