> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/11.-organizaciya-odnomernykh-massivov.-staticheskoe-i-dinamicheskoe-vydelenie-pamyati-pod-massiv..md).

# 11. Организация одномерных массивов. Статическое и динамическое выделение памяти под массив.

## Передача массива в функцию

**Массив** — это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.

**Размер массива** - количество элементов массива. **Размер элемента** - количество байт, занимаемых одним элементом массива. **Длина массива** - количество байт, отводимое в памяти для хранения всех элементов массива.<br>

### Выделение памяти <a href="#vydelenie-pamyati" id="vydelenie-pamyati"></a>

#### Статически: <a href="#staticheski" id="staticheski"></a>

Объявление массива из 10 элементов `int a[10];`

Объявление массива из 10 элементов, равных нулю `int b[10] = {0};`

Объявление массива и заполнение от 1 до 10:`int c[] = {1,2,3,4,5,6,7,8,9,10};`

Происходит при запуске программы.

#### Динамически: <a href="#dinamicheski" id="dinamicheski"></a>

В C (Си) нет динамических массивов, но их можно реализовать через библиотеки работы с динамической памятью.

<pre class="language-cpp"><code class="lang-cpp">double* array = (double*) malloc(2 * sizeof(double));
if (array != NULL) {
<strong>        array[0] = 1;
</strong>        array[1] = 2;
        printf("Array: %d %d", array[0], array[1]);
 
       free(array);
}
</code></pre>

### Передача массивов в функции <a href="#peredacha-massivov-v-funkcii" id="peredacha-massivov-v-funkcii"></a>

Особенность передачи массивов в функции в языке Си в том, что передается не сам массив, а адрес массива, который хранится в указателе на его первый элемент.

`void some_function(int array[]);`

`void some_function(int *array);`
