2017-06-17 26 views
-1

我怎样才能通过一个函数中的指针数组的位置在c ie 我有一个int* array[10];并通过函数我想指定array[0]是位置一个特定的数字说,5。函数的参数应该是什么样子。我曾尝试过: void insert(int* array); 但它没有奏效。通过一个函数中的数组的位置

+0

请写出整个代码,正确的代码格式。 – kabanus

+0

@kabanus我应该写什么作为函数的参数来传递指针数组的位置。 –

回答

1

数组是始终是作为指向数组开头的指针传递,即使不明确写入也是如此。因此,考虑数组的这项声明从你的问题:

int *array[10]; 

以下两个功能将接受一个指向这样一个数组:

int foo(int *array[]); 

int foo(int **array); 

他们只是相当于我会建议你使用第二形式,因为它使得它明确地传递给函数的是什么类型。

在函数内部,可以访问的任何元素,因为索引是作为阵列本身上定义上的指针相同的方式,以一个阵列

int foo(int **array) 
{ 
    int *sixthElement = array[5]; 
    // [...] 
} 

附加文体注:在C语言中,这是常见的做法,宣布当指针标识,不的类型附上*,即最好写

int *array[10]; 

代替

int* array[10]; 

这是因为在一个C声明,有作为指针类型没有这样的东西,有一个指针声明符(由*的,可选限定和标识符),这个声明器声明一个变量是一个指向指定类型的指针。这是一个微妙的区别,但如果你尝试在一行中声明多个变量(不这样做,这只是为了解释这里),你会注意到它:

int *a, b; // <- declares a as a pointer to int, b just as an int 
+0

“*数组总是作为指针传递...... *”...保存数组第一个元素地址的值。 – alk

相关问题