int*参数与int []参数完全相同

saz*_*azr 5 c c++ parameters pointers function

以下2个功能基本上是相同的功能吗?

即,是一个int*完全相同的int[]

int myFunction(int* xVals, int* yVals, int nVertices);
int myFunction(int xVals[], int yVals[], int nVertices);
Run Code Online (Sandbox Code Playgroud)

我该如何使用第一个功能?即,我如何在参数中传递数组?以下是否有效/正确?

int xVals[5], yVals[5], zVals[5];
myFunction(xVals, yVals, zVals, 5);

// or should it be..
myFunction(&xVals[0], &yVals[0], &zVals[0], 5);
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 8

在函数参数列表中,函数声明是等效的:

int myFunction(int* xVals, int* yVals, int nVertices);
int myFunction(int xVals[], int yVals[], int nVertices);
Run Code Online (Sandbox Code Playgroud)

但是,这并不容易概括.在函数内部,有一个很大的区别:

int AnotherFunction(void)
{
    int array[] = { 0, 1, 2, 3 };
    int *iptr = &array[0];
    ...
}
Run Code Online (Sandbox Code Playgroud)

在函数接口中,两种参数类型之间存在很大差异:

int arrays_vs_pointers(int **iptrptr, int array[][12]);
Run Code Online (Sandbox Code Playgroud)

你也问(纠正):

int xVals[5], yVals[5];
myFunction(xVals, yVals, 5);

// or should it be..
myFunction(&xVals[0], &yVals[0], 5);
Run Code Online (Sandbox Code Playgroud)

这些调用都是有效的,并且彼此相同.


原始标题问题的答案' int *完全相同的int []' 不是.

它们相当的情况非常有限,但在更多情况下它们是非常不同的.

修改后的标题问题的答案' 参数是否与int *参数完全相同int []' 是的!