当我尝试编译以下代码时,我收到错误:
错误:来自' 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++;
}
}
我试图以某种方式隐含指向参数的指针,但我想知道问题本身的实际原因。我刚刚检查了另外一些与变量,参数,函数和调用它们几乎完全相同的代码,但是当一个代码完美运行时,我的代码失败了。为什么?
答案 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);