If you had a one-dimensional array then this function declaration
void modifyArray(int *array);
is correct because it is equivalent to the following declaration
void modifyArray(int array[]);
That is the parameter having an array type is adjusted by the compiler to pointer to the array element type.
Though in general it is much better also to pass the number of elements in the array like
void modifyArray(int *array, size_t n);
And if you want to supply an initializer then the function declaration can look like
void modifyArray(int *array, size_t n, int value );
Pay attention to that the two function declarations in your program are different
void modifyArray(int *array);
and
void modifyArray(int *array, int value, int row, int column)
Moreover within the function this statement
array[row][column] = value;
will invoke undefined behavior because there is an access to memory beyond the array.
So if you have an array like this
int array[3][3];
then the corresponding function parameter will look like
void modifyArray( int array[][3], size_t n, int value );
or equivalently like
void modifyArray( int ( *array )[3], size_t n, int value );
So it is better to use a named constant for the integer literal 3 either like
#define N 3
or like
enum { N = 3 };
And the function declaration will look like
void modifyArray( int ( *array )[N], size_t n, int value );
and the array declaration in main will look like
int array[N][N];
and the function itself can be called like
modifyArray( array, N, 3 );
If you want to set all elements of the array to the initializer then within the function you should write
for ( size_t i = 0; i < n; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
array[i][j] = value;
}
}
If your compiler supports variable length arrays then the function declaration can look like
void modifyArray( size_t rows, size_t cols, int array[][cols], int value );
and the function can be called like
modifyArray( 3, 3, array, 3 );
In this case the function can be called for any two-dimensional array with arbitrary values of rows and columns.
Within the function the loops can look like
for ( size_t i = 0; i < rows; i++ )
{
for ( size_t j = 0; j < cols; j++ )
{
array[i][j] = value;
}
}