C++ “错误:从'int*'到'int'函数的转换无效”

C++ “错误:从'int*'到'int'函数的转换无效”,c++,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

当我尝试编译以下代码时,会出现错误:

错误:从“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++;
            }

}

我试图以某种方式暗示指向参数的指针,但我想知道问题本身的实际原因。我刚刚检查了另一个代码,它与各种变量、参数、函数和它们的调用几乎相同,但是,尽管这个代码工作得很好,但我的代码失败了。为什么会这样?

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

void makedeck(int);
但是您的实际函数定义是不同的,而且似乎也是错误的,它需要一个整数数组:

void makedeck(deck[]){
您只需将这两个问题修复为:

void makedeck(int *);


将int数组作为参数调用函数,这是指向int的指针,因此函数应如下所示:

void makedeck(int deck[]);
或者更好:

void makedeck(int* deck);
你对makedeck的声明是错误的

它们应该匹配-并且您还必须在定义中声明参数的类型

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

错误:void makedeckint;更好:void makedeckint*deck@paulsm4我应该改变原型吗?问:我应该改变原型吗?A:没错。作为一个例外,原型是我喜欢C++的东西之一。但是,允许原型具有匿名参数是我最讨厌的事情之一:我强烈建议您使原型与您的定义完全相同,包括参数名称deck。
void makedeck(int);            // Declaration
...
void makedeck(deck[]){         // Definition.
void makedeck(int deck[]);     // Declaration
...
void makedeck(int deck[]){     // Definition.