c++ - 使用引用与指针将数组作为参数传递

标签 c++ arrays

<分区>

我正在尝试通过视频类(class)学习如何使用指针和引用,但我发现指针和引用非常复杂。

我正在尝试做一个非常基础的练习,这样我就可以了解它是如何工作的。它看起来像这样:

void print(int &array, int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << array[i] << " ";
    }
}

int main()
{
    int n, a[10];
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    print(a, 5);
    return 0;
}

它不起作用,因为我正在传递一个数组作为引用。如果我将函数原型(prototype)更改为此

void print(int *array, int size)

它完美地工作。

谁能解释一下为什么?我认为在这种情况下使用指针或引用应该是相同的。两者都会导致数组。我错了吗?

最佳答案

类型int &array声明 array作为对单个 int 的引用变量,而不是 int 的数组元素。

它与指针一起工作的原因是因为数组自然会衰减为指向其第一个元素的指针。 IE。当你通过 a你真正传递的是&a[0] , 类型为 int* .

关于c++ - 使用引用与指针将数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52821726/

相关文章:

c++ - std::vector::resize() 与 gcc 4.7.0 的奇怪行为

c - 在 C 中取消引用本地数组

python - NumPy:来自数组和标量列表的二维数组

C++使用派生类的对象访问基类的 protected 成员函数

c++ - operator== 与 2D vector 、枚举和指针不匹配

c++ - 从 boost spirit x3 解析器返回的 vector 中的空字符串

php - 通过键数组创建嵌套数组

php - 从 Laravel 集合转换数组

python - 如何使用我的数组名称作为文件名?

c++ - 顺序或解析器 a || b