从'int'到'int *'的转换无效(试图用指针做递归)
这里是code.It在数组输入中取3 int。然后它被传递给函数binary.It将十进制数转换为二进制。从'int'到'int *'的转换无效(试图用指针做递归)
#include <iostream> using namespace::std;
void binary(int *);
int main() {
int input[3];
cout << "Enter 3 numbers : ";
for(int i = 0; i < 3; i++){
cin >> input[i];
}
binary(input);
return 0;
}
void binary(int *num){
int rem = 0;
for(int i = 0 ;i < 3; i++){
if (num[i] < 1){
cout << rem;
return;
}
rem = num[i] % 2;
binary(*num/2);
cout << rem;
}
}
的问题是4号最后一行
binary(*num/2);
这显示了从 '诠释' 错误=>无效转换到 '诠释*'[-fpermissive]
帮帮我出去!
回答:
功能binary()
需要一个指针为int作为参数,在函数体内调用它递归传递int
值(该值在地址指针指向)。
纠正代码:
num[i] /= 2; binary(num);
回答:
我不确定我完全理解你在这段代码中做了什么,但我可以告诉你发生了什么事。
*num/2
作为(*num)/2
工作。num
是一个指针(它的类型为int*
),指向数组的开头(第一个元素)。*num
提取第一个元素的值(它的类型为int
)。(*num)/2
划分第一个元素的值。它返回一个整数值。binary(*num/2)
- 在此处传递整数值作为函数binary
的参数,该函数需要int*
而不是int
。这导致了错误。
如果你想划分数组的所有元素,你应该为每个元素单独做。例如:
num[0] /= 2; num[1] /= 2;
num[2] /= 2;
binary(num);
以上是 从'int'到'int *'的转换无效(试图用指针做递归) 的全部内容, 来源链接: utcz.com/qa/258461.html