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