(int *)和(int [])之间签名函数的区别?

时间:2013-10-16 09:17:25

标签: objective-c arrays pointers method-signature

我在使用指针时遇到了一些困难,以及如何在函数中正确声明数组的传递。

有人可以解释一下这个区别:

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

而且:

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

如果你想在objective-c中传递一个数组,那么在下面写一下,这是传递数组的正确方法

- (void) testFunction : (NSArray*) yourArray
{
    NSLog(@"%@",[yourArray objectAtIndex:0]);
}

答案 1 :(得分: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]表示第一个位置中存在的值。索引值表示指针数组必须指向的位置。第二个print语句将值增加到第0个位置。第三个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语法。很容易用这种方式解释它。 希望它有助于!!!