通过引用传递指针

1110101001
#include <iostream>

using namespace std;

void merge(int *& toMerge, int lo, int mid, int hi)
{
    int merged[hi+1];
    int i = lo, j = mid+1;
    for (int k = lo; k <= hi; k++)
    {
        if (i > mid) {merged[k] = toMerge[j]; j++;}
        else if (j > hi) {merged[k] = toMerge[i]; i++;}
        else if (toMerge[j] < toMerge[i]) {merged[k] = toMerge[j]; j++;}
        else {merged[k] = toMerge[i]; i++;}
    }
    toMerge = merged;
}

int main(int argc, const char * argv[])
{

    int x[8] = {1,7,4,6,2,7,3,2};
    merge(x, 0, 7, 3);
    return 0;
}

我试图通过引用传递一个指针,以便最终结果将是对数组x进行排序。但是,我的编译器抛出一个错误,即没有匹配的函数调用merge(x, 0, 7, 3)

我不确定为什么会这样,因为合并功能需要一个指针,并且x是指向数组中第一个元素的指针-因此它应该可以工作。为什么不呢?

萨胡

当将数组作为函数调用的参数而不是指针的引用传递给数组时,数组会衰减为指针。

想象一下:

void foo(int*& p)
{
   p = new int;
}

int main()
{
   int arr[6] = {0};

    foo(arr);
   // You don't want arr to be an invalid object here.
   // If the compiler allowed you to do that, that's what will happen.
   // Not only that, foo(arr); is equivalent to:
   // arr = new int;
   // which is not allowed in the language.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过引用传递指针

来自分类Dev

通过引用和指针传递

来自分类Dev

指针并通过引用传递c ++

来自分类Dev

双指针vs通过引用指针传递

来自分类Dev

通过引用传递时的指针转换

来自分类Dev

通过引用传递动态变量的指针

来自分类Dev

python ctypes,通过引用传递双指针

来自分类Dev

通过引用传递指针时出错

来自分类Dev

通过引用传递指针会使程序崩溃

来自分类Dev

通过引用在C中传递指针

来自分类Dev

通过引用将指针传递给函数

来自分类Dev

通过引用传递动态变量的指针

来自分类Dev

通过引用或指针正确传递向量

来自分类Dev

指针参数是否需要通过引用传递

来自分类Dev

更改通过引用传递的指针的值

来自分类Dev

无法通过引用传递从函数返回的指针

来自分类Dev

通过引用传递字符指针数组的混淆

来自分类Dev

C ++数组是通过引用还是通过指针传递的?

来自分类Dev

通过引用和c中的指针传递参数

来自分类Dev

C ++:通过引用传递(指针指向?)对象数组

来自分类Dev

为什么不能在C中通过引用传递指针?

来自分类Dev

在Delphi中通过引用传递的指针(从DLL导入函数)

来自分类Dev

通过函数中的引用将const指针传递给const

来自分类Dev

通过引用传递的智能指针可以为nullptr吗?

来自分类Dev

c如何通过引用传递指针并增加值

来自分类Dev

在Delphi中通过引用传递的指针(从DLL导入函数)

来自分类Dev

在数组中移动指针-通过引用还是增量传递?

来自分类Dev

使用 int*& 通过引用传递指针会导致奇怪的问题

来自分类Dev

传递对指针的引用