1

我已经看到了这个问题及其答案,它们消除了我的一些困惑,但我仍然担心几件事:

考虑一下:

int someCArray[5]={1,2,3,4,5};

[self processingTheArray:someCArray];

该方法描述为:

-(void)processingTheArray:(int)theCArray;

现在,上述方法有效,即使我认为这不是正确的方法。它确实提供了编译器警告:Incompatible pointer to integer conversion. 我需要担心,因为这仍然有效吗?

使用上面链接的 SO 问题中的方法,我可以这样做:

-(void)processingTheArray:(int)theCArray size:(NSUInteger)length;

但是,我该怎么办lengthinside processingTheArray

4

1 回答 1

4

someCArray是类型int*,不是Byte*int并且Byte尺寸不同,并且不兼容。

通过将您的方法更改为-(void)processingTheArray:(int*)theCArray;,它将在没有警告的情况下工作。

但是,该方法将您的数组作为指针传入,并且它不知道其中是否theCArray包含 1 个 int、5 个 int 或 500 个 int。除非数组总是完全相同的长度,否则您需要一个length参数来指定数组大小,因此在方法内部,您可以循环或做任何您想做的事情。

你可以有类似的东西:

for (int i = 0; i < length; i++) {
    theCArray[i]; // do something
}

在你的processingTheArray:函数里面。

于 2012-06-18T04:34:58.143 回答