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

回答:

我不确定我完全理解你在这段代码中做了什么,但我可以告诉你发生了什么事。

  1. *num/2作为(*num)/2工作。 num是一个指针(它的类型为int*),指向数组的开头(第一个元素)。 *num提取第一个元素的值(它的类型为int)。
  2. (*num)/2划分第一个元素的值。它返回一个整数值。
  3. binary(*num/2) - 在此处传递整数值作为函数binary的参数,该函数需要int*而不是int。这导致了错误。

如果你想划分数组的所有元素,你应该为每个元素单独做。例如:

num[0] /= 2; 

num[1] /= 2;

num[2] /= 2;

binary(num);

以上是 从'int'到'int *'的转换无效(试图用指针做递归) 的全部内容, 来源链接: utcz.com/qa/258461.html

回到顶部