Массивы переменной длины в C и C ++
Массивы переменной длины - это функция, с помощью которой мы можем выделить автоматический массив (в стеке) переменного размера. C поддерживает массивы переменного размера из стандарта C99. Например, приведенная ниже программа компилируется и отлично работает на C.
Также обратите внимание, что в стандартах C99 или C11 есть функция, называемая «гибкие элементы массива», которая работает так же, как указано выше.
void fun( int n) { int arr[n]; // ...... } int main() { fun(6); } |
Но стандарт 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: Санджаюльша Имя_длина: 11 Выделенный_Размер_Структуры: 23 Student_id: 535 Stud_Name: Cherry Имя_длина: 6 Выделенный_Размер_Структуры: 18 Размер студента Struct: 12 Размер указателя структуры: 8
Использованная литература:
http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c
https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
Эта статья предоставлена Абхаем Рати и Санджаем Канной . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.