指针和数组作为参数有什么区别?

时间:2014-12-09 20:44:06

标签: c++ arrays pointers

它们之间有什么重大区别吗?对我来说它看起来一样......并且根据一些谷歌搜索它似乎也一样。只是想在这里确认..

void getAnything(int arr [])
{
    arr[0] = 2;
}

void getAnything(int *arr)
{
    arr[0] = 2;
}  

int main()
{
    int arr [1];
    getAnything(arr);
}

2 个答案:

答案 0 :(得分:1)

它是一样的。事实上,我会有像

这样的东西
void getAnything(int arr [10])
{
    arr[0] = 2;
}

也会一样。

答案 1 :(得分:0)

是的,它们恰好相同:

  

[C++11: 8.3.5/5]: [..] 确定每个参数的类型后,“T数组”或“返回T的函数”类型的任何参数被分别调整为“指向T”或“指向函数返回T的指针”。 [..]

它很混乱,因为这意味着你的论点实际上不需要与数组有任何关系,但是你去了;谢谢,C!它还有助于鼓励那些数组成为指针的神话,很遗憾。

以下所有内容:

void foo(int[]   x);
void foo(int[5]  x);
void foo(int[42] x);

实际上是指这个:

void foo(int* x);