После выхода из функции, чтобы матрица не изменялась - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как сделать так, чтобы передать матрицу в функцию, в функции матрицу изменить (поменять элементы матрицы симметрично относительно побочной диагонали) вывести её на экран, но чтобы после окончания функции массив был прежним. Массив - локальная переменная. Написал код - массив изменяет правильно, но после завершения функции, в главную программу отдает измененный массив.
void sim(int *, int);
.
.
.
sim(*mas, S);
.
.
.
void sim(int *massiv, int N)
{
 int i,j,x,tmp,y,z;
     y=N-1;                            
     for (i=0,N--; j>0; i++,N--)          
     {
         for (j=0; j<N; j++) 
         {
             x=y-j;
             tmp = *(massiv+i*SIZE+j);
             *(massiv+i*SIZE+j) = *(massiv+x*SIZE+N);    
             *(massiv+x*SIZE+N) = tmp;
         }
     }
                printf("\nParveidotaa matrica (raditaaji):\n");
                for (i=0,y++; i<y; i++)                        
                {
                    for (j=0; j<y; j++)                   
                    {
                        printf("%4d", *(massivs+i*y+j));         
                    }
                    printf("\n");                                      
                }   
}

Решение задачи: «После выхода из функции, чтобы матрица не изменялась»

textual
Листинг программы
void sim(const int* massiv, int N)
{
    int array[N * N];
    memcpy(array, massiv, sizeof(array));
    // Теперь используем array, а не massiv
 
    // ..
}

Объяснение кода листинга программы

  1. В функции sim есть массив array размером N * N.
  2. С помощью функции memcpy в array копируются значения из массива massiv.
  3. В функции используется массив array, а не massiv.
  4. В конце функции ничего не происходит с массивом array или massiv.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы