Когда я пытаюсь отобразить результаты тестов в функции sortArray, я могу получить доступ только к адресу памяти. Как получить доступ к значениям баллов? Также корректно ли функция sortArray?Сортировка по массиву указателей
#include <iostream>
using namespace std;
void sortArray(int *[], int);
int main()
{
int *testScores = nullptr;
//dynamically allocate an array
int scoreNUMS;
int score;
cout << "Please enter the total number of test scores" << endl;
cin >> scoreNUMS;
testScores = new int[scoreNUMS];
//dynamically allocates an array large enough to hold scoreNUMS
for(int i = 1; i <= scoreNUMS; i++)
{
cout << "Enter student " << i << "'s test score" << endl;
cin >> score;
if (score <= -1)
{
cout << "Please enter positive numbers only!" << endl;
}
*(testScores + i) = score;
//puts the input score in the array
}
sortArray(&testScores, scoreNUMS);
return 0;
}
Я не уверен, если функция ниже правильно, потому что я не знал, куда поместить * и &
void sortArray(int *array[], int size)
{
bool swap;
int temp;
do
{
swap = false;
for(int count = 0;count < (size - 1); count++)
{
if(array[count] > array[count + 1])
{
temp = *array[count];
array[count] = array[count + 1];
array[count + 1] = &temp;
swap = true;
}
}
}while(swap);
for(int i = 0; i < size; i++)
cout << *(array + 1) << endl;
}
Подсказка 1: параметр функции 'int * array []' действительно есть 'int ** array'. Подсказка 2: посмотрите в 'std :: vector', поэтому вам не нужно беспокоиться об этом. – juanchopanza
Ваша функция сортировки ошибочна, но почему вы все равно передаете указатель на массив? Что не так с обычным способом 'void sortArray (int * array, int size)'? – john
Я думал, что при использовании массивов вам нужно было указать их «[]» в прототипе функции и заголовке, это неверно? – Cameron