2

ポインターと、関数で配列の受け渡しを適切に宣言する方法に少し苦労しています。

誰かが私にこれの違いを説明してもらえますか:

- (void) testFunction : (int *) array
{
    NSLog(@"%d",array[0]);
}

この :

- (void) testFunction : (int []) array
{
    NSLog(@"%d",array[0]);
}

どうもありがとう。

4

2 に答える 2

1

Objective-C で配列を渡したい場合は、以下に記述します。配列を渡す適切な方法です。

- (void) testFunction : (NSArray*) yourArray
{
    NSLog(@"%@",[yourArray objectAtIndex:0]);
}
于 2013-10-16T09:24:48.283 に答える
0

以下の例では、その配列の最初のメンバーを指す配列へのポインターを渡しています。そのため、ポインター値をインクリメントすると、ポインターが指す位置がインクリメントされます..つまり、配列の次の項目。

 void testfunction(int *array)
  {
     printf("%d",*(array));        //value of array[0]
     printf("%d",*(array+1));      //value of array[1]
     printf("%d",*(array+2));      //value of array[2]


  }

以下の例では、位置ではなく、ポインターが保持する値が変更されています。

void testfunction(int *array)
  {
     printf("%d",*(array));    //value of array[0] gets printed
     printf("%d",*(array)+1);  // value of array[0]+1
     printf("%d",*(array)+2);  //value of array[0]+2


  }

以下の例は、最初の例と似ています。array[0] は、最初の位置に存在する値を示します。インデックス値は、ポインター配列が指す位置を表します。2 番目の print ステートメントは、0 番目の位置の値をインクリメントします。3 番目の print ステートメントは、ポインターの位置をインクリメントしますつまり、配列内の次の値を取ります。

  void testfunction(int array[])
  {
     printf("%d",array[0]);       //value of array[0]
     printf("%d",array[0]+1);     //value of array[0] +1
     printf("%d",array[0+1]);     // value of array[1].Index value changed
  }

C構文を使用して申し訳ありません。この方法で簡単に説明できると思いました。それが役に立てば幸い!!!

于 2013-10-16T10:15:36.127 に答える