gpt4 book ai didi

c - 是否可以使用函数获取数组的长度?

转载 作者:行者123 更新时间:2023-11-30 18:24:07 25 4
gpt4 key购买 nike

据我所知,以下代码可用于获取数组(在本例中为整数数组)的长度(即包含多少项):

int arrayOfInt[] = { 10, 20, 30, 40, 50 };

int lenght = sizeof(arrayOfInt) / sizeof(int);

这给出了“5”作为输出,这是正确的。但是,如果我在函数中使用相同的代码,它就不起作用。

int getLenght(int intArray[])
{
return sizeof(intArray) / sizeof(int);
}

lenght = getLenght(arrayOfInt);

使用上面的函数,我得到“1”作为输出。这是不正确的。为什么会出现这种情况?我做错了什么还是不可能?

最佳答案

这是不可能的。数组作为函数参数传递时,会衰减为指向第一个元素的指针,因此本质上,在函数内部,您拥有的只是一个指向数组第一个元素的指针。

此外,sizeof 运算符作用于提供的变量type,它无法在转换之前知道实际类型。 p>

详细说明,

 int getLenght(int intArray[])

 int getLenght(int *intArray)

功能和行为相同。它不再是数组了。

<小时/>

话虽如此,只是一个建议,获取数组中元素数量的更可靠方法是

  int length = sizeof(arrayOfInt) / sizeof(arrayOfInt[0]);

这使得表达式独立于硬编码数据类型,保留实际用途。

关于c - 是否可以使用函数获取数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44099897/

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