我在使用指针时遇到了一些困难,以及如何在函数中正确声明数组的传递。
有人可以解释一下这个区别:
- (void) testFunction : (int *) array
{
NSLog(@"%d",array[0]);
}
而且:
- (void) testFunction : (int []) array
{
NSLog(@"%d",array[0]);
}
非常感谢。
答案 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语法。很容易用这种方式解释它。 希望它有助于!!!