Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы для подготовки к экзамену по ОП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
297.52 Кб
Скачать

Начальная инициализация массива.

Напишем простую программу. Создадим массив, после чего найдём его максимальный элемент.

#include <conio.h>

#include <stdio.h>

void main() {

int a[10] = {1, 2, 5, 3, 9, 6, 7, 7, 2, 4};

unsigned i;

int max;

max = a[0];

for (i = 1; i<10; i++) {

if (a[i] > max) {

max = a[i];

}

}

printf("max element is %d", max);

getch();

}

Разберём пример. Сначала мы создаём массив и инициализируем его при создании. После этого присваиваем максимальному найденному элементу значение первого элемента массива.

max = a[0];

После чего проходим по массиву. Так как мы уже просмотрели первый элемент (у него индекс 1), то нет смысла снова его просматривать.

Тот же пример, только теперь пользователь вводит значения.

#include <conio.h>

#include <stdio.h>

void main() {

int a[10];

unsigned i;

int max;

printf("Enter 10 numbers\n");

for (i = 0; i<10; i++) {

printf("%d. ", i);

scanf("%d", &a[i]);

}

max = a[0];

for (i = 1; i<10; i++) {

if (a[i] > max) {

max = a[i];

}

}

printf("max element is %d", max);

getch();

}

В том случае, если при инициализации указано меньше значений, чем размер массива, остальные элементы заполняются нулями.

#include <conio.h>

#include <stdio.h>

void main() {

int a[10] = {1,2,3};

unsigned i;

for (i = 0; i<10; i++) {

printf("%d ", a[i]);

}

getch();

}

Если необходимо заполнить весь массив нулями, тогда пишем

int a[10] = {0};

Можно не задавать размер массива явно, например

int a[] = {1, 2, 3};

массив будет иметь размер 3

Размер массива

Массив в си должен иметь константный размер. Это значит, что невозможно, например, запросить у пользователя размер, а потом задать этот размер массиву.

printf("Enter length of array ");

scanf("%d", &length);

{

float x[length];

}

Создание динамических массивов будет рассмотрено дальше, при работе с указателями и памятью.

В некоторых случаях можно узнать размер массива с помощью функции sizeof.

#include <conio.h>

#include <stdio.h>

void main() {

int A[57];

//sizeof возвращает размер всего массива в байтах

//Для определения количества элементов необходимо

//разделить размер массива на размер его элемента

int size = sizeof(A) / sizeof(int);

printf("Size of array equals to %d", size);

getch();

}

Но это вряд ли будет полезным. При передаче массива в качестве аргумента функции будет передаваться указатель, поэтому размер массива будет невозможно узнать.

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