繁体   English   中英

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

[英]“error: invalid conversion from 'int*' to 'int' function”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM