Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Массивы; их описание, размещение в памяти, инициализация.

Размещение элементов массива в памяти выполняется последовательно.

Количество элементов в массиве определяет размер массива и является константным выражением.

Имя массива определяет адрес первого элемента массива.

Имя массива в отличие от имени вектора нельзя указывать в левой части оператора присваивания.

При создании массива память под все его элементы выделяется последовательно для каждого элемента в зависимости от типа массива. Для многомерных массивов в первую очередь изменяются значения самого правого индекса.

Например, для массива charaCh[2][4] будет выделено восемь байтов памяти, в которых в следующем порядке будут размещены элементы массива:

Элемент aCh[0][0] aCh[0][1] aCh[0][2] aCh[0][3] aCh[1][0] aCh[1][1] aCh[1][2] aCh[1][3]

N байта             1                2                 3                   4     5                  6    7                  8

Двухмерные массивы можно рассматривать как матрицу, в которой первый индекс определяет строку, а второй индекс - столбец. Порядок расположения элементов матрицы в памяти - по строкам.

При размещении трехмерного массива charaCh[3][2][5] память под элементы этого массива будет выделяться последовательно в соответствии со следующими значениями индексов:

Общий объем выделяемой под массив памяти определяется как произведение всех размерностей массива (общее число элементов), умноженное на длину типа данных массива.

Строки; их описание, инициализация.

Символьные строки организуются как массивы символов, последним из которых является символ \0, внутренний код которого равен нулю.

 

На длину символьного массива в Си нет ограничения.

Форма записи:

charstring[10];

где: string – имя строковой переменной              

10 – размер массива, то есть в данной строке может поместиться 9 символов, последнее место отводится под нуль-терминатор

Строка при объявлении может быть инициализирована начальным значением, например, так:

charstring[10] = "abcdefghf\0";

Функции для определения длины строки, сравнения и копирования строк.

Сравнение строк:

intstrcmp (char * s 1, char * s 2) (сравнивает s1 и s2, возвращает значение 0, если строки эквивалентны)

intstrncmp (char * s 1, char * s 2, intn) ( сравнивает не более n символов строк s1 и s2, возвращает значение 0, если начальные n символов строк эквивалентны)

Определение длины строки:

intstrlen(char *s) (возвращает количество символов в строке s)

Копирование строк:

char * str с py (char * s 1, char * s 2) (копирует строку s2 в строку s1, включая '\0', возвращает s1)

char * strncpy (char * s 1, char * s 2, intn) (копирует не более n символов строки s2 в строку s1, возвращает s1;)

Структуры. Шаблон структуры, имя структуры, указатель на структуру, доступ к элементам структуры.

Структура является собранием одного или более объектов (переменных, массивов, указателей, других объектов), которые для удобства работы с ними объединены под одним именем. Структура – это сложный тип данных представляющий собой упорядоченное в памяти множество элементов различного типа. Каждый элемент в структуре имеет свое имя и называется полем. В СИ элементы структуре располагаются последовательно, а размер структуры определяется суммой размеров всех элементов.

Форма записи:

struct [имя типа]

  {

   поле_1;

   поле_2;

   ...

   поле_N;

  } [список переменных];

Заказ памяти для одномерного массива.

Формазаписи:

с =(int*)malloc(n*sizeof(int));

где: int – тип

   с - массив

malloc – размер массива в байтах

sizeof – размер одного элемента массива в байтах

n – количество элементов в массиве

Заказ памяти для матрицы.

Форма записи:

с =(int*)malloc(n*sizeof(int));

x=(int*)malloc(m*sizeof(int));

a=(int*)malloc(m*sizeof(int));

где: int – тип

c – массив строки

x – массив столбца

a – матрица

malloc – размер массива (строка или столбец) в байтах

sizeof – размер одного элемента массива (строки и столбца) в байтах

n – количество элементов в строке

m – количество элементов в столбце



<== предыдущая лекция | следующая лекция ==>
Оператор цикла с постусловием do-while. Прерывание работы цикла. | Заказ памяти для массива структур.
Поделиться с друзьями:


Дата добавления: 2018-11-11; Мы поможем в написании ваших работ!; просмотров: 1235 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

4050 - | 3884 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.