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

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

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

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

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

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

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

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

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


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

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

10   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы