从 'int' 到 'int*' 的转换无效(尝试使用指针进行递归)

Invalid conversion from 'int' to 'int*'(Trying to do recursion with pointers)

本文关键字:int 指针 递归 无效 转换      更新时间:2023-10-16

这是代码。它在数组输入中占用 3 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);

这里它显示了错误 =>从 'int' 到 'int*' 的无效转换 [-fallowive]

帮帮我!

函数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);