Динамическое выделение памяти - C (СИ) (75910)

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

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

Здравствуйте! Хочу часть кода,где динамически выделяется память под массив:
double *darr;
    if ( !(darr = (double *)calloc(100,sizeof(double)) ) )
    {
         fprintf(stderr,"osibka raspredeleniya pamyati!\n");
    }
Заменить на код,где вместо 100 в calloc будет стоять число элементов в файле. Подскажите пожалуйста как это можно сделать... Пыталась добавлять цикл на подсчёт символов,но ничего не выходит.В чем ошибка?
    double *darr; // массив символов
    int k=0;
    while (!feof(fin))
        {
            
            for(int i=0;;i++)
                k=i++;
              
        }
   if ( !(darr = (double *)calloc(k,sizeof(double)) ) )
    {
         fprintf(stderr,"osibka raspredeleniya pamyati!\n");
    }

Решение задачи: «Динамическое выделение памяти»

textual
Листинг программы
double *darr; // массив символов

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

  1. Объявляется указатель на массив символов с именем darr.
  2. В данном случае, переменная darr является указателем, а не самим массивом.
  3. Указатель darr пока не указывает на какой-либо блок памяти.
  4. Для того чтобы использовать указатель darr как массив, необходимо выделить под него память.
  5. Однако, в данном коде, выделение памяти для указателя darr не выполняется.
  6. Поэтому, darr не может быть использован для хранения значений типа double.
  7. Переменная darr остается пустой и не содержит адреса какого-либо блока памяти.
  8. В результате, попытка использовать darr как массив приведет к неопределенному поведению.

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


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

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

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