Я новичок в использовании GSL, и мне было интересно, как я могу вернуть массив GSL из одной функции в другую. Это не похоже на обычный массив ... Я пытался понять это на некоторое время, и у меня нет сильного фона C, и это сводит меня с ума. Вот две псевдофункции, которые показывают, что я пытаюсь сделать.Передача GSL-массивов другим функциям
Это основная функция
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_matrix.h>
void load(gsl_matrix * a);
int main()
{
int row, col,i,j;
row = 6; col = 25;
gsl_matrix *a = gsl_matrix_alloc(6,25);
load(a);
for (i = 0; i < 6; i++)
for (j = 0; j < 25; j++)
printf ("a[%d,%d] = %g\n", i, j,
gsl_matrix_get (a, i, j));
return 0;
}
И это функция нагрузки, которая загружает в матрицу из файла. Эта часть, похоже, работает ... Я просто не могу получить результат от этой функции до основной функции.
#include <stdio.h>
#include <stdlib.h>
#include <gsl/gsl_matrix.h>
void load(gsl_matrix * a)
{
int row_size, col_size;
row_size = 6; col_size = 25;
int status_obs;
gsl_matrix * obs_map = gsl_matrix_alloc(row_size,col_size);
FILE *f = fopen("obs_map.dat","r");
status_obs = gsl_matrix_fscanf(f,obs_map);
fclose(f);
a = obs_map;
if(status_obs == 0)
printf("Obstacle map loaded: %dx%d\n",row_size,col_size);
gsl_matrix_free (obs_map);
}
Прошу прощения, если это глупый вопрос, но мне просто нужна небольшая помощь в правильном направлении. Любая помощь любого, кто использует GSL, будет оценена по достоинству. Просто FYI, вот gsl matrix examples
yep это по существу то, что я сделал. Спасибо за вашу помощь! не используется для выделения памяти, но я понял, что я делал, как только я просмотрел указатели. – jti107