目标C中数组的长度

时间:2009-10-07 07:22:39

标签: objective-c arrays find

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

11 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:21)

Objective-C没有任何特定的内容。您将使用与使用C相同的技术。

sz = (sizeof foo) / (sizeof foo[0]);

答案 2 :(得分:17)

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

答案 3 :(得分:5)

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

答案 4 :(得分:5)

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

答案 5 :(得分:4)

[数组计数]这似乎在objective-c

中最简单

答案 6 :(得分:3)

当数组中的元素总数未知时,可以使用此代码。

main()
{
    int a[]={1,2,3,4,5,6,7}
    int i;
    clrscr();
    for (i=0;i<=((sizeof(a)/sizeof(int));i++)
    {
        puts(a[i]);
    }
    getch();
}

答案 7 :(得分:2)

C中没有arrayname.length这样的东西。这就是为什么这么多函数采用参数对,一个参数与数组和一个参数与数组的长度。最明显的例子是主要功能。您可以在名为main.m的文件中找到此功能是您的所有iPhone项目,它看起来像这样:

int main(int argc, char *argv[]) {    
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  int retVal = UIApplicationMain(argc, argv, nil, nil);
  [pool release];
  return retVal;
}

注意argv agument是一个 v ector或字符串数​​组,argc参数是 c 如何这个数组中有很多项目。

您必须对所有基本类型执行相同的操作,这是Objective-C的 C 部分。如果您使用NSArray或子类保留 Objective 部分工作正常,但要求所有元素都是对象。

答案 8 :(得分:1)

看起来像NSMutableArray的工作。你有什么理由需要使用C数组吗?如果没有,请考虑NSMutableArray

我可能是错的(如果我是,请纠正我),但是在C中没有简单的方法可以在运行时获得int []的大小。你必须做一些事情,比如创建一个结构来保存你的数组,以及一个int,在那里你可以自己跟踪数组中有多少项。

即使是发烧友,你也可以让你的结构保存你的数组和一个块。然后你可以设计块来为你做跟踪。

但这更像是一个C问题,而不是客观问题。

答案 9 :(得分:1)

如果需要整数数组,请将它们包装在NSNumber对象中并将它们放入NSArray中。

你要做的事情,在C中并没有得到很好的支持,尽管mac上有一个方法可以尝试(malloc_size):

determine size of dynamically allocated memory in c

答案 10 :(得分:0)

您应该尝试以下方法:

float ptArray[] = {97.8, 92.3, 89.4, 85.7, 81.0, 73.4, 53.0, 42.3, 29.4, 14.1};

int x = sizeof(ptArray)/sizeof(ptArray[0]);

 NSLog(@"array count = %d", x);

输出

array count = 10