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;

しかし、私はlength内部で何をしprocessingTheArrayますか?

4

1 に答える 1

4

someCArrayint*ではありませんByte*intByteサイズが異なり、互換性がありません。

メソッドを に変更すると-(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 に答える