Массивы переменной длины — это функция, в которой мы можем выделить автоматический массив (в стеке) переменного размера. C поддерживает массивы переменного размера из стандарта C99. Например, приведенная ниже программа компилируется и прекрасно работает на C.
Также обратите внимание, что в стандартах C99 или C11 есть функция, называемая «гибкими элементами массива» , которая работает так же, как и выше.
|
Но стандарт C ++ (до C ++ 11 ) не поддерживает массивы переменного размера. Стандарт C ++ 11 упоминает размер массива как константное выражение. См. (См. 8.3.4 на стр. 179 из N3337 ). Таким образом, приведенная выше программа не может быть допустимой программой C ++. Программа может работать в компиляторе GCC, потому что компилятор GCC предоставляет расширение для их поддержки.
В качестве примечания, в последнем C ++ 14 (см. 8.3.4 на стр. 184 из N3690 ) размер массива упоминается как простое выражение (не константное выражение).
Реализация
|
Выход:
Student_id : 523 Stud_Name : Sanjayulsha Name_Length: 11 Allocated_Struct_size: 23 Student_id : 535 Stud_Name : Cherry Name_Length: 6 Allocated_Struct_size: 18 Size of Struct student: 12 Size of Struct pointer: 8
Ссылки:
http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c
https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
Эта статья предоставлена Абхай Рати и Санджай Канна . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме
Рекомендуемые посты:
- Аргумент переменной длины в C
- Аргументы переменной длины для макросов
- Можем ли мы получить доступ к глобальной переменной, если есть локальная переменная с таким же именем?
- Внутренняя статическая переменная и внешняя статическая переменная с примерами в C
- Как напечатать имя переменной в C?
- Использование переменной в качестве спецификатора формата в C
- Переопределение глобальной переменной в C
- Различные способы инициализации переменной в C / C ++
- Почему имя переменной не начинается с цифры в C?
- Как изменить const переменную в C?
- C | Объявление и область действия переменной | Вопрос 1
- C | Объявление и область действия переменной | вопрос 2
- C | Объявление и область действия переменной | Вопрос 3
- C | Объявление и область действия переменной | Вопрос 4
- C | Объявление и область действия переменной | Вопрос 6
0.00 (0%) 0 votes