user2085224
user2085224

Reputation: 49

primary-expression before ']' error meaning

I am trying to fix a code with errors, and I have one more error left I cannot figure out. The error says: expected primary-expression before ']' token, what does this mean? I have checked for misplaced semicolons and variable names, but cannot find anything. Here is my code(I have commented the line with an error):

// countOnes.cpp
#include<iostream>
#include<cstdlib>
using namespace std;

void countOnes( int array[] ); // Count the number of 1s in a given int array.
const int arraySize = 10;
int array[ arraySize ];
int countOne = 0;

int main()
{
  for ( int i = 0; i <= arraySize; i++ )
  {
    array[ i ] = rand() % 3;  // Fill array with 0, 1 or 2 randomly
    cout << array[ i ] << " ";
  }
  countOnes( array[], arraySize ); //ERROR

  cout << "\n The number of 1s in the array: " << countOne;

  return 0;
}

void countOnes( int array[], int arraySize )
{
  for ( int i = 0; i <= arraySize; i++ )
    if ( array[ i ] == 1 )
      countOne = countOne + 1;
  return;
}

Upvotes: 1

Views: 2715

Answers (4)

stobo
stobo

Reputation: 11

'array' is treated as reserved word in Microsoft's extension of C. See Why is "array" marked as a reserved word in Visual-C++?. Replace 'array' by something else, e.g. 'arr'.

Upvotes: 1

Tony The Lion
Tony The Lion

Reputation: 63190

If you want to pass an array, you can pass a pointer to the first element to the array:

 void countOnes( int* array, int size );

Upvotes: 0

alexrider
alexrider

Reputation: 4463

countOnes( array[], arraySize ); //ERROR

You don't need [] here
Also declaration of

void countOnes( int array[] ); // Count the number of 1s in a given int array.

Doesn't correspond to its definition

void countOnes( int array[], int arraySize )

Upvotes: 2

John Kugelman
John Kugelman

Reputation: 361575

No square brackets needed.

countOnes(array[], arraySize);

Upvotes: 4

Related Questions