无法将参数 1 从"int"转换为"int []"
Cannot convert parameter 1 from 'int' to 'int []'
对于我的编程类的赋值,我收到以下错误:错误1错误C2664:"binarySearch":无法将参数1从第34行的"int"转换为"int[]"。
#include<iostream>
using namespace std;
int selectionSort(int[], int);
int binarySearch(int[], int, int);
int sorted;
int main()
{
int size;
int i;
int desirednum;
cout << "How many values do you want to enter?";
cin >> size;
int* userarray = 0;
userarray = new int[size];
for (i = 0; i < size; i++)
{
cout << "Enter a value: ";
cin >> userarray[i];
}
int sorted = selectionSort(userarray, size);//calls the selection sort function
cout << "What value are you looking for: ";//asks what value they are searching for
cin >> desirednum;
int location = binarySearch(sorted, size, desirednum);
delete[] userarray;
return 0;
}
int selectionSort(int numbers[], int size)
{
int i, j, min, minidx, temp, desirednum, sorted = 0;
cout << "What value are you looking for: ";
cin >> desirednum;
for (i = 0; i < (size - 1); i++)
{
min = numbers[i];
minidx = i;
for (j = i + 1; j < size; j++)
{
if (numbers[j] < min)
{
min = numbers[j];
minidx = j;
}
}
if (min < numbers[i])
{
temp = numbers[i];
numbers[i] = min;
numbers[minidx] = temp;
sorted++;
}
}
return sorted;
}
int binarySearch(int& user_array, int amount, int value)
{
int left, right;
int* middle;
left = 0;
right = amount - 1;
while (left <= right)
{
middle = (int*)((left + right) / 2);
if (value == user_array[middle])
{
return *middle;
}
}
}
您的签名(声明)是
int binarySearch(int[], int, int);
但你的定义是:
int binarySearch(int& user_array, int amount, int value)
这不一样。CCD_ 1只是通过引用取一个CCD_。您想要接收一个数组(或指针)。
顺便说一句,amount
相当具有误导性。CCD_ 4将更加准确和典型。
以下是预期语法和用法的示例:
void printArray(int array[], int size) {
for(int i = 0; i < size; ++i) {
std::cout << array[i];
}
}
// Usage
int array[] = {1,2,3};
printArray(array, 3);
注意,参数的类型是int[]
而不是int&
(其仅是对int
的引用)。您也可以使用int*
。
我还没有看C++,但我可以在您对binarysearch()函数的调用中看出,您传递的是单个int,而不是整数数组。您将变量"sorted"作为第一个参数传入二进制搜索。"sorted"被声明为int,并被分配了selectionsort函数的返回值。selectionsort()定义为返回类型为int。
我认为主要的问题是应该将变量"userarray"作为第一个参数传递给binarysearch()。查看binarysearch()的第一个参数的名称。
selectionsort(sorted)返回的值似乎只是一个计数器,用来跟踪执行选择排序需要进行多少交换。如果你不需要这些信息(我看不出该变量有任何用处),那么你可以将selectionsort设为一个void函数。
编辑-还有(多亏了Mike),我刚刚注意到函数声明与定义之间的差异。
相关文章:
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 将字符串中的 int 转换为字母;
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 如何将矢量<int>转换为字符数组?
- C++ 无法从 const int* 转换为 const_iterator
- 我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *
- 如何将 int[4] 转换为 std::array<int,4>?
- 如何将data[i].int转换为vaible
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 将私有矩阵形式 int 转换为双 C++
- 无法将参数 1 从 'int' 转换为 'int &'
- 将 int 转换为字符串后始终得到 0
- isspace 函数的性能警告,从 int 转换为布尔值
- 将大 int 转换为浮点数,而不舍入 c++
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将未签名的INT转换为BCD
- 在 C++ 中将 int 转换为双精度