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] 表示存在于第一个位置的值。索引值表示指针数组必须指向的位置。第二个打印语句递增第 0 个位置的值。第三个打印语句递增指针所在的位置数组指向。也就是说,它取数组中的下一个值。

  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 回答