Описание тега variable-length-array

Массив переменной длины - это массив на C99 и других языках, размер которого неизвестен во время компиляции; вместо этого он определяется во время выполнения.
1 ответ

Почему этот код C (чтение файла) падает при выходе (или перераспределении файла)?

Следующий код вылетает прямо перед выходом из программы. Я проверил это на MSVS 2015 и GCC. Программа просто назначает VLA в куче (читайте об этом здесь, если хотите) и читает символьное содержимое файла и сохраняет этот символ в массиве. Программа …
18 мар '17 в 01:02
4 ответа

Предел массива Scanf в C?

У меня есть небольшая ошибка в C: Ошибка: выражение должно иметь постоянное значение Я знаю, это означает, что мой лимит должен иметь постоянное значение, но как я могу решить это, когда у меня такая ситуация? printf("Type limit: "); scanf("%i",&amp…
18 фев '13 в 12:29
2 ответа

Несколько конструкторов с переменными параметрами аргумента

Учитывая эти два конструктора: SomeClass(int... params) { // Do things } SomeClass(long... otherParams) { // Do other things } Что происходит, когда создается объект foo? SomeClass foo = new SomeClass(); Неопределенный конструктор по умолчанию как-т…
09 янв '19 в 19:58
2 ответа

Есть ли в C++ массивы переменной длины?

Я всегда думал, что массивы переменной длины недопустимы в C++ (см.: Почему массивы переменной длины не являются частью стандарта C++?). Но почему этот код компилируется и работает? #include <iostream> using namespace std; int main () { int n;…
4 ответа

Определите массив глобально с переменным параметром в C

Вот код: int EdgeCount = 0; int numOfEdges = 0; void addEdge() { // some code numOfEdges++; } int EdgeWeightArray[numOfEdges]; // error Я хочу, чтобы этот глобальный массив с переменными параметрами использовал его позже, но я не мог этого сделать, …
14 июн '18 в 13:16
3 ответа

Как определить размер массива на основе количества входов?

Насколько мне известно (я новичок в c), вы можете определить размер массива при условии, что пользователь знает, сколько входных данных собирается предоставить пользователь. Но как я могу определить размер массива на основе количества входов? Наприм…
21 янв '16 в 15:47
2 ответа

Пример размера массива

У меня были проблемы с пониманием, почему int n; cin>>n; int arr[n]; работает. Мне сказали, что этот код не должен выполняться, потому что значение 'n' может быть объявлено только во время выполнения и, следовательно, не должно компилироваться…
01 сен '17 в 21:21
5 ответов

Массивы, созданные в функциях, время компиляции или время выполнения?

Когда мы создаем массив в стеке, большинство компиляторов захотят узнать размер массива, который будет определен во время компиляции, поэтому обычно мы не можем заставить пользователя ввести размер массива из стандартного ввода, но что если мы вызыв…
28 май '18 в 21:20
1 ответ

Инициализация массива переменной длины в ноль

int x = 750; int i = 0; while (pow(2, i) < x) { i++; } printf("i is currently %d\n", i); int array[i]; while (i > 0){ i--; printf("The value of array %d is %d\n", i, array[i]); } Когда я делаю это, это создает действительно сумасшедшие ценност…
05 июн '14 в 02:46
1 ответ

Perl - расщепление строки

Я делаю массив, который содержит каждое слово фразы. Когда я пытаюсь разделить его и вывести длину, консоль выдаёт мне огромное количество, например: 111039391231319239188238139123919232913123... (больше строк) почему? Вот мой код: $mynames = $texto…
09 июл '13 в 12:33
2 ответа

Как исправить эту функцию, чтобы она возвращала конкатенацию двух строк?

Я пытаюсь написать пользовательскую функцию в C, которая объединит две строки. До сих пор я придумал: char *strcat406(char *str1, char *str2) { int str1length = 0; int str2length = 0; char newStr[str1length + str2length]; int i; for (i = 0; i < s…
15 апр '16 в 15:26
1 ответ

Массив переменной длины с длиной 0?

В C массиву обычно не разрешается иметь размер 0 (если я не использую одно или другое расширение на стороне компилятора). OTOH, есть VLA, длина которых может оказаться равной 0. Они разрешены? Я говорю о следующем коде: void send_stuff() { char data…
06 июн '14 в 13:04
2 ответа

Как передать динамический 2-D массив в функцию в C++

Я пытаюсь передать динамический 2-D массив в функцию, и он выдает ошибку. Я попытался явно указать размеры массива, и это сработало, но динамический не работает, никаких указателей (каламбур не предназначен) #include <iostream> #include <ve…
13 апр '15 в 04:19
4 ответа

Работа с текстом переменной длины в Tensorflow

Я строю модель Tensorflow для выполнения вывода по текстовым фразам. Для простоты предположим, что мне нужен классификатор с фиксированным количеством выходных классов, но с вводом текста переменной длины. Другими словами, моя мини-партия будет пред…
1 ответ

Работа с массивами и формальными параметрами переменной длины. (Java:38: ошибка: ожидается ".class")

Я не закончил работать над этой программой, поэтому знаю, что могут быть и другие ошибки. В настоящее время я получаю ожидаемую ошибку ".class", и по какой-то причине я не вижу этой ошибки.Я использую jGrasp, и это проект для моего вступления в клас…
4 ответа

Могу ли я сделать динамический массив таким образом?

Итак, мой код такой: int a, b; printf("Give dimensions\n"); scanf("%d %d", &a, &b); double array1[a][b]; printf("Give values\n"); int i, j; for(i=0; i<a; i++) { for(j=0; j<b; j++) { scanf("%lf", &array1[i][j]); } } Моя проблема в т…
4 ответа

Возврат VLA и использование

У меня есть следующая функция: int* create_matrix_2(int rows, int cols) { double (*A)[rows][cols] = malloc(sizeof(int[rows][cols])); for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { *A[row][col] = row * cols + col;…
25 май '15 в 12:15
6 ответов

В чем преимущество malloc?

В чем преимущество выделения памяти для некоторых данных. Вместо этого мы могли бы использовать их массив. подобно int *lis; lis = (int*) malloc ( sizeof( int ) * n ); /* Initialize LIS values for all indexes */ for ( i = 0; i < n; i++ ) lis[i] =…
4 ответа

Есть ли накладные расходы на использование массивов переменной длины?

Есть ли накладные расходы на использование массивов переменной длины? Может ли размер массива быть передан через аргумент командной строки во время выполнения? Почему это введено, по сравнению с автоматическим и динамическим размещением массива?
09 янв '10 в 19:55
2 ответа

Есть ли веская причина, почему VLA не разрешены в указателях в структурах?

Вот способ определить тип матрицы typedef struct { int nr, nc; double *elem; } Matrix; Я хотел бы определить это typedef struct { int nr, nc; double elem[nr][nc]; } Matrix; Было бы неплохо, потому что мне не пришлось бы беспокоиться об индексах. Вот…
14 сен '15 в 13:09