"错误:来自' int *'的无效转换到' int'功能"

时间:2015-12-24 21:19:51

标签: c++

当我尝试编译以下代码时,我收到错误:

  

错误:来自' int *'的转换无效到' int'功能

代码是:

#include <iostream>
#include <algorithm>
using namespace std;

void makedeck(int);

int main(){

int pHand[10]={0};
int dHand[10]={0};
int deck[52];
makedeck(deck); //Error is given for this line
random_shuffle(&deck[0],&deck[10]);

return 0;}

void makedeck(deck[]){
int a=0;
for(int x=101;x<114;x++)
    {
        deck[a]=x;
        a++;
            }
for(int x=201;x<214;x++)
    {
        deck[a]=x;
        a++;
            }
for(int x=301;x<314;x++)
    {
        deck[a]=x;
        a++;
            }
for(int x=401;x<414;x++)
    {
        deck[a]=x;
        a++;
            }

}

我试图以某种方式隐含指向参数的指针,但我想知道问题本身的实际原因。我刚刚检查了另外一些与变量,参数,函数和调用它们几乎完全相同的代码,但是当一个代码完美运行时,我的代码失败了。为什么?

3 个答案:

答案 0 :(得分:4)

你的函数声明说makedeck函数有一个整数参数:

void makedeck(int);

但是你的实际函数定义是不同的(似乎也是错误的),它需要一个整数数组:

void makedeck(deck[]){

你只需将这两个修复为:

void makedeck(int *);

void makedeck(int *deck){

答案 1 :(得分:2)

您对makedeck的声明错误

void makedeck(int);            // Declaration
...
void makedeck(deck[]){         // Definition.

它们应该匹配 - 你也必须在定义中声明参数的类型。

void makedeck(int deck[]);     // Declaration
...
void makedeck(int deck[]){     // Definition.

答案 2 :(得分:1)

你用一个int数组作为arg调用一个函数,这是一个指向int的指针,所以你的函数应该是这样的:

void makedeck(int deck[]);

或(更好):

void makedeck(int* deck);