【发布时间】:2021-04-21 18:47:41
【问题描述】:
好吧,我真的不知道这个错误是什么意思。 * 是指针对吗?我没有使用指针,所以我不明白发生了什么?这是我的第二节编程课,所以我还是个新手。任何帮助将不胜感激!
MAIN.CPP
#include <iostream>
#include "arr.hpp"
int main()
{
int size = getInteger();
int array;
fillArray(array,size);
sortArray(array, size); //THE ERROR COMES UP FOR ALL OF THESE FUNCTIONS.
displayArray(array, size);
binSearch(array, size, value);
return 0;
}
ARR.CPP
#include "arr.hpp"
#include <iostream>
int getInteger()
{
int value;
std::cout << "Please enter integer between 10 and 20 for size of array: ";
std::cin >> value;
// check if size is in range
if (value >= 10 && value <= 20)
{
return value;
}
else
{
std::cout << "Error. Please enter a correct value." << std::endl << std::endl;
std::cin.clear(); //clears error from cin.fail()
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //removes old cin input for value
std::cin >> value;
}
return value;
}
void fillArray(int array[], int size)
{
std::srand(static_cast<unsigned>(std::time(0)));
for (int i = 0; i < size; i++)
{
array[i] = (std::rand() % 99)+1;
}
}
void sortArray(int array[], int size)
{
std::sort(array, array+size);
}
void displayArray(int array[], int size)
{
for (int i = 0; i < size; i++)
{
std::cout << array[i] << std::endl;
if((i+1)%5 == 0)
{
std::cout << std::endl;
}
}
}
bool binSearch(int array[], int size, int value)
{
int low = 0;
int high = size - 1;
int mid;
while(low <= high)
{
mid = (low+high) / 2;
if(value == array[mid])
{
return mid;
}
else if (value > array[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return -1;
}
ARR.HPP
#ifndef arr_hpp
#define arr_hpp
int getInteger();
void fillArray(int array[], int size);
void sortArray(int array[], int size);
void displayArray(int array[], int size);
bool binSearch(int array[], int size, int value);
#endif /* arr_hpp */
【问题讨论】:
-
您的函数期望您传递一个数组。您正在传递一个 int。数组在传递给函数时会衰减为指针,这就是错误所显示的内容。
-
此外,发布的代码几乎不可读。我建议编辑帖子以使其具有一定的可读性。在这个网站上,海报上有责任让他们的问题可读,其他人没有责任阅读不可读的帖子。
-
I'm not using pointers但你是!我知道这很令人惊讶,但您不能将数组作为 C++ 中的函数参数。在这段代码中void fillArray(int array[], int size);array实际上是一个指针。
标签: c++ arrays pointers error-handling compiler-errors