2009-05-12 24 views
4

Iが配列ポインタは、配列内のものを変更するためにそれを通過した機能を有する:関数を参照して配列を渡す方法は?

  • (ボイド)arrayFunction:(バイト[])targetarray
  • { //は をtargetarrayするものを行う}を

これはバイト型の配列ですが、丸い角かっこで適切なものを入れたとは思いません。代わりに(Byte [])の代わりにすべきですか?この関数に渡されるサイズの異なる複数の配列が存在する可能性があります。

ありがとうございます!

(void)arrayFunction:(Byte*)targetarray 

をまたは、代わりにバイト配列のNSDataのを使用し、より「○○っぽい」ように:それは、プレーン、古い配列だ場合

答えて

5

、私はこれを行うだろう

(void)arrayFunction:(NSData*)targetarray 
+5

バッファオーバーフローを避けるために、配列サイズをパラメータとして渡すことを忘れないでください。 –

+0

NSDataインスタンスを渡すことは、大部分の場合、NSDataラッパーのメリットを享受する(つまり辞書、NSUserDefaults、NSArchiverなどにドロップする)後に何か他の処理を行うつもりでない限り、大過剰です。それ以外の場合は、Cスタイルの配列を渡します。その目的のためにByte *を渡すだけですが、Adamは実際に使うべきであると指摘しました。 - (void)arrayFunction:(Byte *)targetArray length:(NSUInteger)length; –

1

プレーンなC配列を使っているようです。配列ポインタは、単に配列の最初の要素へのポインタであることに注意してください。 "全体配列"を参照として渡すのではなく、インデックス0にポインタを渡します。

配列を渡している場合は、ポインタをByte*と定義する必要があります。シンプルなC配列を渡すときの実際の動作

関連する問題