Задание размера массива после его объявления во время выполнения программы - C (СИ)

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

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

Ребята, подскажите, как задать размер массиву во время выполнения. Я напишу пример на java - нужно по аналогии сделать на Си
Листинг программы
  1. class C {
  2. int[] a;
  3. ...
  4. void someMethod(int size) {
  5. a = a[size];
  6. }
  7. }
Идея в том, чтобы другие функции могли ссылаться на глобально объявленный массив и получать его размер с помощью sizeof(), одновременно нужно указать размер массива с помощью scanf(). С помощью такого кода:
Листинг программы
  1. int* a;
  2. void someMethod(int size) {
  3. int tmp[size];
  4. a = tmp;
  5. }
естественно, не получается, потому что a хранит указатель на первый элемент массива, а не на сам массив, поэтому sizeof(a) вернет 4, а не 4 * size.

Решение задачи: «Задание размера массива после его объявления во время выполнения программы»

textual
Листинг программы
  1. int *a, size;
  2. main()
  3. {
  4.    scanf(%d", &size);
  5.   a = (int *)malloc(size*sizeof(int));
  6. ...

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

  1. Объявление переменных a и size
  2. Ввод значения переменной size с помощью функции scanf
  3. Выделение памяти под массив a с помощью функции malloc ...

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


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

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

14   голосов , оценка 4.143 из 5

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

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

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