I have a small lab where I'm trying to dynamically allocate an array to hold whatever number of scores. We were given the code to pass it into a function that sorts those scores via pointer notation. However, when I try to pass the array into the function, I get the above error. I did some googling and found that when you pass an array by pointer notion, you can't use the [] in the function, only *. Once I take the brackets out and just leave int * however, then I get a few errors inside the sort function itself, mostly ref to []. Was the sort function written wrong on purpose or am I passing nums wrong?


//function prototypes
void arrSelectSort(int *[], int);

int main()
    //dynamically allocate an array
    int *nums;
    int size;
    int x; 
    float total;
    //get number of test scores
    cout<<"How many test scores would you like to enter? ";
    //dynamically allocate an array large enough to hold 
    //that many test scores
    nums = new int[size];
    //get test scores
    for (x = 0;x < size;x++)
        cout<< "Score " << (x + 1) << ": ";
    //calculate total test scores 
    for (x = 0;x <size;x++)
        total += nums[x];
    //sort array
    arrSelectSort(nums, size);
    //display results
    //display array
    for (x = 0;x <size;x++)
    return 0;

void arrSelectSort(int *arr[], int size)
   int startScan, minIndex;
   int *minElem;

   for (startScan = 0; startScan < (size - 1); startScan++)
      minIndex = startScan;
      minElem = arr[startScan];
      for(int index = startScan + 1; index < size; index++)
         if (*(arr[index]) < *minElem)
            minElem = arr[index];
            minIndex = index;
      arr[minIndex] = arr[startScan];
      arr[startScan] = minElem;
8 Years
Discussion Span
Last Post by ArkM

1. Correct function body, of course. Absolutely clear declaration:

void arrSelectSort(int arr[], int size);
// the same as
void arrSelectSort(int *arr, int size);

2. It seems you forgot to initialize total var...

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.