间接需要指针操作数(' int'无效)* __ result = * __ first;

时间:2015-09-14 21:23:58

标签: c++

我编写了将一个数组的元素复制到另一个数组的代码,我收到了这个错误。

#include <iostream>

using namespace std;

void copy(const int* a, int* b, int size =5)
{
    for ( int i=0; i<size; i++)
    {
        b[i] = a[i];
    }
}

int main()
{
    int a[] = {1,2,3,4,5};

    int b[5];

    copy(a,b,5);

    cout << b << endl;
}

2 个答案:

答案 0 :(得分:3)

由于这个愚蠢的std::copy::copyusing namespace std之间存在冲突。 std::copy采用不同的论点,其中第三个不是int,就像你的版本一样。

使用::copy调用它或完全停止使用using namespace std

顺便说一下,我不明白你期望cout << b << endl做什么?数组没有内置的格式化专业化。

答案 1 :(得分:0)

为什么不使用

的另一个好样本
using namespace std;
已经声明了std::copy()函数的

。如果声明了该函数,它实际上是特定于实现的,包含的头文件。 无论如何,看起来你已经画了一根短小的稻草,你的功能声明/定义变得含糊不清。

您可以明确地引用全局命名空间来解决这个问题:

   ::copy(a,b,5);
// ^^

Live Demo

如果从

收到指针地址值,也不要怀疑
cout << b << endl;

这正是预期的结果。您需要一个循环来输出该数组中的各个值。