[英]“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.