Я использую алгоритм, в котором мне нужно скопировать 2D-матрицу в 2D-матрицу большего размера.Когда я работаю в том же главном стеке, он работает хорошо, но когда я передаю указатель скопированной матрицы другой функции, значения становятся поврежденными.
Шаги для создания проблемы: 1- Скопируйте 2D-квадратматрица размера x в другую квадратную матрицу размера y (y> x).2- Передайте указатель скопированной матрицы в функцию.3- Распечатайте матрицу внутри функции.
В результате будут искажены значения.
int main(void) {
int tab[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int tab2[5][5];
int size = 3;
// Coppying tab to tab2
for(int i = 0; i<size; i++)
{
for(int j = 0; j<size; j++)
{
tab2[i][j] = tab[i][j];
}
}
// printing tab2 using myPring Function
myPrint(tab2, size);
return 0;
}
void myPrint (int* tab, int size)
{
for(int i = 0; i<size; i++)
{
printf("|");
for(int j = 0; j<size; j++)
{
printf("tab[%d][%d] => %d |", i, j, *((tab+i*size) + j) );
}
printf("\n");
}
printf("____________________________________________\n");
}