Я должен сделать функцию, которая копирует массив и возвращает его.
const int HEIGHT = 21;
const int WIDTH = 16;
char field [HEIGHT][WIDTH] = {
"###############",
"# #",
"# ## ### #### #",
"# ## ### #### #",
"# #",
"# ######## # #",
"# # # #",
"# # ##### # #",
"# # ##### # #",
"# # # #",
"# # # #",
"# #",
"# ## ######## #",
"# ## ######## #",
"# ## ######## #",
"# #",
"# ### ### #",
"# ########### #",
"# ########### #",
"# #",
"###############",
};
char copyArray(char copyField[][1]) { //Copy the array field to newField and return it to main
int i = 0;
int j = 0;
for (int i = 0; i < HEIGHT; i++) {
copyField[i][j] = field[i][j];
for (int j = 0; j < WIDTH; j++)
copyField[i][j] = field[i][j];
}
/* for (int i = 0; i < HEIGHT; i++) {
cout << copyField[i] << endl;
} */
return copyField[i][j];
}
int main() {
//char newField[HEIGHT][WIDTH] = copyArray();
//cout << newField[1][1] << endl;
int i = 0;
int j = 0;
char copyField[HEIGHT][WIDTH]= copyArray(*copyField[][1]);
return 0;
}
Мои проблемы: как я могу дать copyArray от основной функции функции copyArray и как мне ее вернуть? теперь часть копии работает нормально, я протестировал ее, объявив char copyArray [HEIGHT] [WIDTH] в функции copyArray, напечатав ее там. Я знаю, что векторы и memcpy работают лучше и легче, но я должен использовать это.
В этом примере показано, как передавать массивы в функции и возвращать их.
#include <stdio.h>
#include <math.h>
double* func(int i, double * mas)
{
double* mas_new = new double[i];
for(int z=0; z<i; z++)
mas_new[z] = sqrt(mas[z]);
return mas_new;
}
int main()
{
double mas[] = {1.0, 2.0, 3.0, 4.0};
double* mas_new;
for(int z=0; z<4; z++)
printf("%f ", mas[z]);
mas_new = func(4, mas);
for(int z=0; z<4; z++)
printf("%f ", mas_new[z]);
delete mas_new;
return 0;
}
Существует два способа заставить массив функционировать.
void foo (int* arr) {
....
}
или
void foo (int arr[]) {
.....
}
Как и второй параметр, рекомендуется передать размер массива.
Чтобы вернуть массив из функции, вы должны вернуть указатель на свой первый элемент.