"error: invalid conversion from 'int*' to 'int' function"

"error: invalid conversion from 'int*' to 'int' function"

本文关键字:int to function conversion from invalid error      更新时间:2023-10-16

当我试图编译以下代码时,我得到了错误:

错误:从"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 *);

void makedeck(int *deck){

您对makedeck的声明是错误的

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

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

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

您调用一个以int数组为arg的函数,这是一个指向int的指针,因此您的函数应该是这样的:

void makedeck(int deck[]);

或(更好):

void makedeck(int* deck);