Another input is needed as a buffer to store the output, newarray
is local and will be erased when the function ends.
void changearray(char matrix[3][3], char Array[9])
{
Array[0] = matrix[0][0];
Array[1] = matrix[0][1];
Array[2] = matrix[0][2];
Array[3] = matrix[1][0];
Array[4] = matrix[1][1];
Array[5] = matrix[1][2];
Array[6] = matrix[2][0];
Array[7] = matrix[2][1];
Array[8] = matrix[2][2];
//for( int i = 0; i < 9; i++ )
// Array[i] = matrix[i/3][i%3];
}
int main()
{
char Board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
char Array[9];
changearray(Board, Array);
}
The other option is to procedurally allocate memory with the new
keyword.
char* changearray(char matrix[3][3])
{
char* Array = new char[9]; // Allocate Memory
Array[0] = matrix[0][0];
Array[1] = matrix[0][1];
Array[2] = matrix[0][2];
Array[3] = matrix[1][0];
Array[4] = matrix[1][1];
Array[5] = matrix[1][2];
Array[6] = matrix[2][0];
Array[7] = matrix[2][1];
Array[8] = matrix[2][2];
return Array;
}
int main()
{
char Board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
char* Array = changearray(Board);
// Use Array
delete[] Array; // Release data
}
Note: C++ treats two dimensional arrays and one dimensional arrays semi-identically, more like an array of arrays. You can use Board[0][5]
or (*Board)[5]
to indicate Board[1][2]
instead.