Массив — это тип структуры данных, который может хранить однородные элементы типа данных. Размер массива фиксирован.
Синтаксис:
int arr[N];
здесь тип данных массива — целое число, имя массива — arr, а размер массива — N.
Пример:
С
// C Program to declare an
// array and check it's size
#include <stdio.h>
int
main()
{
int
arr[5] = { 1, 2, 3, 4, 5 };
printf
(
"Size of the array: %d bytes\n"
,
sizeof
(arr));
return
0;
}
Выход
Size of the array: 20 bytes
В приведенной выше программе мы создали массив с некоторыми элементами в нем. Это наиболее распространенный способ создания массива. Затем мы использовали оператор sizeof() для вывода размера массива. Чтобы узнать больше об операторе sizeof(), обратитесь к sizeof() в C.
Размер типа данных варьируется от машины к машине. На нашей машине тип данных int состоит из 4 байтов, а приведенный выше массив содержит 5 элементов, поэтому общий размер массива составляет 5×4 = 20 байт.
Теперь мы создадим массив, указав только его размер. Мы не будем вставлять в него какие-либо элементы. Посмотрите на приведенную ниже программу:
Пример:
С
// C Program to check
// above condition
#include <stdio.h>
int
main()
{
int
arr[5] = {};
printf
(
"Size of the array: %d bytes\n"
,
sizeof
(arr));
return
0;
}
Выход
Size of the array: 20 bytes
Приведенный выше вывод говорит о том, что размер массива составляет 20 байт.
Причина: Причина в том, что мы упомянули размер массива. Итак, компилятор автоматически создает массив, который может содержать 5 значений, несмотря на то, что мы еще не объявили никаких значений. В этом случае в массив помещаются некоторые заранее определенные значения, чтобы заполнить его позиции. Вот почему вывод показывает, что массив имеет размер 20 байт. Дело в том, что мы еще не вставили никаких значений.
Пустой массив
Массив можно сказать только тогда, когда размер массива равен 0. И это возможно только при инициализации. Итак, давайте проверим, как проверить, когда массив пуст.
Пример:
С
// C Program to check array is
// empty or not
#include <stdio.h>
int
main()
{
// Method1 to declare empty array
int
arr1[] = {};
// Method2 to declare empty array
int
arr2[0];
printf
(
"Size of the array1: %d bytes\n"
,
sizeof
(arr1));
printf
(
"Size of the array2: %d bytes\n"
,
sizeof
(arr1));
return
0;
}
Выход
Size of the array1: 0 bytes Size of the array2: 0 bytes
Способ 1: Здесь мы объявили массив, но не указали его размер и не вставили в него какие-либо элементы. Это означает, что компилятор не знает ни размера массива, ни его элементов. Таким образом, он не может использовать ни один из них, чтобы задать массиву определенный размер. В результате в массиве не осталось места для элементов, поэтому приведенный выше вывод показывает, что размер массива равен 0 байт.
Способ 2: поскольку размер массива уже равен 0, ему не выделяется память. Так тоже пусто