A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
lectures / 6. массивы, перечисления.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cannot retrieve contributors at this time
311 lines (225 sloc) 15.1 KB
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
6. массивы и перечисления
Как и в большинстве других языков программирования, в Си под массивом понимается совокупность однородных данных, рассматриваемых как нечто единое. Математическими аналогами программистского понятия массив является, например, матрица, которая в программе задается в виде двухмерного массива, или вектор, задаваемый одномерным массивом. Массив это такой объект программы, который характеризуется именем, размерностью, количеством элементов по каждому измерению и типом значений его элементов.
ИНФОРМАТИКА 9 класс: Массивы в Паскале | Одномерные массивы. Описание, заполнение вывод массива
определяет тип элементов массива;
– это , задающийся по усмотрению программиста и являющийся именем массива. Имя массива используется для доступа к элементам массива;
определяет количество элементов массива по каждому измерению и записывается целой беззнаковой константой.
int v[120]; //одномерный массив из 120-ти целых чисел; float mt[7][9]; //двумерный массив из 7×9=63 чисел с плавающей точкой; char str[25]; //массив из 25-ти символов; char *u[10]; //массив указателей на объекты типа char; int *pr[2][3]; //двухмерный массив из 2х3=6 указателей на целые данные; int (*r)[5][6]; //указатель на данные целого типа, //сгруппированные в массивы 5*6, //самих данных может даже не быть.
Доступ к элементу массива обеспечивается использованием имени массива, вслед за которым в квадратных скобках записываются координаты элемента (индексы) по соответствующим измерениям. Элементы многомерного массива отображаются в линейной памяти одномерным массивом, своеобразной построчной разверткой.
int vect[10], k; for(k = 0; k 9; k++) vect[k] = k;
int num[2]=1,3>; -> num[0]=1; num[1]=3;
При описании массивов с инициализацией элементов не обязательно указывать размеры массива. Компилятор сам определит количество элементов и выделит для них память соответствующего размера. Недостающие при инициализации значения принимаются равными нулю
char text[] = «hello»>; int vector[3] = 86, 2>;
Инициализация многомерного массива похожа на сбор матрешки. Имеем как бы несколько массивов вложеных друг в друга. Но ничего не мешает развертывать многомерный массив построчно, как будто это линейный массив.
char buf [] = < >; char buf [][] = , < >, < >>; char buf [][][] = < , < >, < >>, , < >, < >>, , < >, < >> >; char buf [][][] = < >;
Доступ к элементам массива
Объявление массива и доступ к элементам массива (MQL4)
- Использование индексированной переменной. Это наиболее естественный, простой и понятный способ доступа к элементам массива любой размерности. пример:
mas[n] = 0x1;
*(mas + n) = 0x1;
int m[2][3][2] = < < //m[0] < 10, 11 >, //m[0][0] < 12, 13 >, //m[0][1] < 14, 15 > //m[0][2] >, < //m[1] < 16, 17 >, //m[1][0] < 18, 19 >, //m[1][1] < 20, 21 > //m[1][2] > >; m[1][2][3] //значение элемента m[1][2][3] *(m[1][2]+ 3)
int arr[2][3] = 1,2,3,4,5,6>; // , >; int *p = arr; p +=3; //a[0][3] p +=4; //a[1][4]
Cимвольная строка в Си есть не что иное, как массив символов, последним символом которого является нуль-символ – признак конца строки. Для нуль-символа также надо зарезервировать место в массиве. Размер массива можно задавать и явно.
char text[]= «строка»; char text[]= ‘с’,’т’,’р’,’о’,’к’,’а’,’