W ogóle to masz świadomość jak działają wskaźniki ? Funkcja - int writeElement(int idx) {return array[idx];} zwraca Ci int natomiast array[idx] trzyma w sobie int*.
To samo w createArray, operator new zwraca Ci wskaźnik na podany typ. W tym przypadku przypisanie array = new int[20] to tak jakbyś napisał, że do int** przypisujesz int*.
int **array;
int *writeElement(int idx) {return array[idx];}
void createArray(void) {array=new int*[20];}
int main()
To samo w createArray, operator new zwraca Ci wskaźnik na podany typ. W tym przypadku przypisanie array = new int[20] to tak jakbyś napisał, że do int** przypisujesz int*.
int** array;
int * & writeElement(int idx) { return array[idx]; }
void createArray(void) { array = new int*[20];