Можно ли изменить адрес указателя без копирования всей матрицы вручную? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть матрица, определенная указателями, и в функции матрица передается по ссылке; в функции я хочу, чтобы матрица была изменена на какую-то другую матрицу (с одним из измерений, отличающихся друг от друга), и я бы не хотел перераспределять и копировать всю матрицу с циклом for (много данных). Я хотел бы знать, как это сделать, мой код выглядит примерно так:

double **matrix;
matrix = malloc(rows*sizeof(double*));
for(i=0; i<rows; i++){
    matrix[i] = malloc(columns*sizeof(double));
    }
...
my_function(matrix,rows, columns);

с функцией:

double my_function(double **matrix, int rows, int columns){
double **new_matrix
...
return new_rows /*the columns stay the same*/
}

РЕДАКТИРОВАТЬ: количество строк уменьшается, но все элементы в матрице изменяются; Я думал о двух способах сделать это, но я не знаю, выполнимо ли какое-либо из них:

1) Внутри написания функции

matrix = new_matrix

Это делает так, чтобы после завершения функции я мог получить доступ к new_matrix, используя матрицу?

2) Внутри функции пишется некий вложенный цикл, чтобы освободить все столбцы и строки matrix, а затем перераспределить их с новым значением new_matrix; хотя это кажется выполнимым, это также очень много времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...