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

What is the difference with pointer and array as parameters?

本文关键字:什么 区别 参数 数组 指针      更新时间:2023-10-16

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

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

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

主要

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

是一样的。事实上,我会有类似的东西

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

也会是一样的。

是的,它们是完全相同的:

[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);