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)
在函数参数列表中,函数声明是等效的:
Run Code Online (Sandbox Code Playgroud)int myFunction(int* xVals, int* yVals, int nVertices); int myFunction(int xVals[], int yVals[], int nVertices);
但是,这并不容易概括.在函数内部,有一个很大的区别:
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)
你也问(纠正):
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);
这些调用都是有效的,并且彼此相同.
原始标题问题的答案' 是int *完全相同的int []?' 不是.
它们相当的情况非常有限,但在更多情况下它们是非常不同的.
修改后的标题问题的答案' 参数是否与int *参数完全相同int []?' 是的!
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |