从 'int' 到 'int*' 的转换无效(尝试使用指针进行递归)
Invalid conversion from 'int' to 'int*'(Trying to do recursion with pointers)
这是代码。它在数组输入中占用 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);
我不确定我是否完全理解您在此代码中所做的工作,但我可以告诉您发生了什么。
*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 指针的浮点数的位表示形式
- 引用数据的 int 指针
- 为什么我不能像这样直接将 int 分配给 int 指针:int *p = 6;?
- 为什么可以将Char指针变量初始化为字符串,而INT指针变量不能初始化到整数数组
- 将 Int 指针分配给双精度变量
- 如何使用函数参数中的int指针来获取2d数组中最大值的索引并返回指针
- 为什么在int指针的const vetory中脱离了元素
- (C++)通过指针递增,或者:为什么这不起作用?指针->int = 指针->int+1;
- 如何在 C++ 中将浮点指针转换为 int 指针
- 循环中的 int C++指针?
- 当我创建一个int指针并实例化一个数组时,数组在内存中发生了什么
- 将字符阵列转换为INT指针
- 施放INT指针时编译错误
- 如何返回一个 int 指针,指向矢量<int>的开头
- 64位计算机上的int大小和int指针大小
- 如何将 void 指针类型转换为 int 指针,然后在其中存储 int
- 取消对结构的 int 指针地址的引用
- 通过"int *"指针更改"const int"。令人惊讶和有趣
- C/C++ int[] vs int*(指针与数组表示法).有什么区别