Массивы переменной длины в C и C ++

Опубликовано: 1 Января, 2022

Массивы переменной длины - это функция, с помощью которой мы можем выделить автоматический массив (в стеке) переменного размера. 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

Эта статья предоставлена Абхаем Рати и Санджаем Канной . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите учиться на лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.
C++ C