目标C中数组的长度

Dar*_*pan 32 arrays objective-c find

我没有在任何问题中找到答案.我正在将一个整数数组传递给一个函数.现在我想遍历数组.但是,因为在C,C++中工作的东西很简单,使用arrayname.length给出了数组中的元素数量.找到它的方法是什么?[NSArrayObject length]适用于NSArray类型,但我希望它用于int [].甚至没有[XYZ计数]工作....所以想要另一种方式找到它.

use*_*420 30

您可以使用[XYZ计数]来获取数组的长度

  • 问题是关于 C 数组,其中没有计数选择器。 (2认同)

And*_*ell 22

Objective-C没有任何特定于int的数组.您将使用与使用C相同的技术.

sz = (sizeof foo) / (sizeof foo[0]);
Run Code Online (Sandbox Code Playgroud)

  • @Darpan:只有在声明int foo [5]而不是int foo []时才有效. (3认同)

Chu*_*uck 18

array.length在C中没有这样的东西.在Objective-C中的int数组与C中的int数组完全相同.如果它是静态定义的int foo[5],那么你可以做到sizeof(foo)获得大小 - 但只在相同的函数foo中定义in(对于其他函数,它只是一个int指针,而不是一个数组本身).否则,没有固有的方法来获取此信息.您需要传递大小或使用sentinel值(如C字符串中的终止'\ 0',它只是char的数组).

  • 正如我所说,没有办法.`sizeof()`适用于静态大小的数组,就像我在上面给出的相同函数中给出的示例一样.这是最接近它的C来支持它. (4认同)

小智 8

[数组计数] 这似乎在 Objective-C 中最简单


unw*_*ind 6

咦?在C中,没有"arrayname.length"这样的东西.诸如原始类型的数组int[]在运行时没有与其相关联的任何长度信息.


Jam*_* M. 5

数组基本上只是一个内存块的内存地址,该内存块是为数组分配的.要实际使用它,您需要在创建它之后以某种方式记住长度.您可以将长度传递给每个函数,或者将数组和长度包装在另一个结构中,并传递该结构.