Задание размера массива после его объявления во время выполнения программы - C (СИ)
Формулировка задачи:
Ребята, подскажите, как задать размер массиву во время выполнения.
Я напишу пример на java - нужно по аналогии сделать на Си
Идея в том, чтобы другие функции могли ссылаться на глобально объявленный массив и получать его размер с помощью sizeof(), одновременно нужно указать размер массива с помощью scanf().
С помощью такого кода:
естественно, не получается, потому что a хранит указатель на первый элемент массива, а не на сам массив, поэтому sizeof(a) вернет 4, а не 4 * size.
class C {
int[] a;
...
void someMethod(int size) {
a = a[size];
}
}int* a;
void someMethod(int size) {
int tmp[size];
a = tmp;
}Решение задачи: «Задание размера массива после его объявления во время выполнения программы»
textual
Листинг программы
int *a, size;
main()
{
scanf(%d", &size);
a = (int *)malloc(size*sizeof(int));
...
Объяснение кода листинга программы
- Объявление переменных
aиsize - Ввод значения переменной
sizeс помощью функции scanf - Выделение памяти под массив
aс помощью функции malloc ...