int []是什么意思

时间:2015-06-12 14:00:15

标签: c function coding-style int

声明它时,C编程中int[]的含义是什么?就像在这段代码中一样

int findPivot(int[], int, int);

5 个答案:

答案 0 :(得分:4)

鉴于您询问类型为int[]函数参数,在此特定情况下,它等同于指向int的指针,即int*。这两者没有区别。在其他情况下,int[]可能有不同的含义。

这两个函数声明是相同的:

void foo(int[]);
void foo(int*);

两者都等同于:

void foo(int[42]);

如果您要定义多个,则会出现多重定义错误

void foo(int[]) {}
void foo(int*) {} // ERROR! Multiple definition.

现在,由于C允许数组衰减为指针,因此您实际上可以使用foo数组作为参数调用int。数组衰减到指向其第一个元素的指针。

int a[42];
int b[99];
int c;
foo(a);
foo(b);
foo(&c);

由于衰减是指针,所有数组大小信息都会丢失。

答案 1 :(得分:2)

在此功能声明中

int findPivot(int[], int, int);

int [] - 是函数参数的声明,具有未知数字元素的整数数组的类型。所以这是一个不完整的类型。

编译器将此声明调整为指针。所以这两个函数声明是等价的

int findPivot(int[], int, int);
int findPivot(int *, int, int);

当您将数组作为参数的相应参数传递时,它会隐式转换为指向其第一个元素的指针。因此,数组中的元素数量并不重要。因此,上面两个声明可以附加函数的声明,其中指定了数组中元素的数量。例如

int findPivot(int[10], int, int);
int findPivot(int[20], int, int);
int findPivot(int[], int, int);
int findPivot(int *, int, int);

这些声明声明了同一个函数。

答案 2 :(得分:1)

 int findPivot(int[], int, int);

是一个函数声明。有时,它也被称为Forward declarationFunction prototype

FWIW,在函数声明中,你可以省略变量名,只指定变量类型就足够了。

此特定上下文中,int[]int*具有相同的含义,即int[]这里指的是函数接受指向{的指针{1}}作为第一个参数。

在调用函数时,我们可以传递

  • 指向int
  • 的指针
  • int数组(因为传递参数时array decaying效果,数组类型参数归结为指针)。

您可以将该功能称为

int

答案 3 :(得分:0)

在您指定的情况下,它指定具有参数stub int[]的该函数的第一个位置可用于任何数组参数

如果它在这样的分配中

int values[] = {9, 2, 6, 1, 4};

这意味着将使用在初始化该数组时添加的数组项创建值,在本例中为5。

答案 4 :(得分:-1)

findPivot需要一个int array和两个int变量。 int数组实际上是一组整数值。在这种情况下,它相当于int pointer