Разобрать код по созданию динамического массива, который заполняется из файла - C (СИ)

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

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

Собственно хочу спросить у вас правильно ли я понимаю одну вещь... есть код по созданию динамического массива , в который мы помещаем матрицу чисел , считанных из файла.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
void vvod(float ***mas,int *n, int *k,float **mas3,float **mas2);
 
main()
{
int n,k,p; float **mas,*mas2,*mas3;
vvod(&mas,&n,&k,&mas3,&mas2);
vivod(mas,n,k);
pxod(mas,n,k,mas3,p);
vivod(mas,n,k);
korni(mas,n,k,mas2,mas3,p);
}
 
void vvod(float ***mas,int *n,int *k, float **mas3, float **mas2)
{
int i,j;
FILE* in;
in=fopen("text_in.txt","r");
fscanf(in,"%d",n);
fscanf(in,"%d",k);
*(mas)=(float**)malloc(*n*sizeof(float*));
for(i=0;i<*n;i++)
*(*(mas)+i)=(float*)malloc(*k*sizeof(float));
for(i=0;i<*n;i++)
for(j=0;j<*k;j++)
fscanf(in,"%f",*(*(mas)+i)+j);
fclose(in);
*mas3=(float*)malloc(*n*sizeof(float));
*mas2=(float*)malloc(*n*sizeof(float));
}
Правильно ли я понимаю ... мы работаем с указателем на массив указателей , именно поэтому **mas. А чтобы отправить всё это в функцию ввод мы ставим третью * в определение функции? это был первый момент. Второе что хотелось бы убедиться что я правильно понимаю, как заполняют массив , тоесть обращение к его элементам
fscanf(in,"%f",*(*(mas)+i)+j);
(*(mas)+i) - это увеличение адреса второго измерения, и мы перемещаемся по столбцам. *(*(mas)+i)+j) - это увеличение адреса внешнего массива и мы перемещаемся по строкам. Попытался объяснить. Скажите правильно я понимаю или нет?

Решение задачи: «Разобрать код по созданию динамического массива, который заполняется из файла»

textual
Листинг программы
void vvod(float ***mas,int *n, int *k,float **mas3,float **mas2);

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


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

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

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