Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Глава 3 массивы и структуры






К совокупностям данным относятся массивы, структуры и файлы

 

3.1 Массивы

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

· описание массива

Формат: Синтаксис описания массива

< тип> < имя_переменной> [количество_элементов_массива]

· Обращение (ссылка) к элементу массива

Отдельные элементы массива собственного имени не имеют. Доступ к ним можно получить, используя оператор [ ].

Формат:

< имя_массива> [< индекс_элемента> ]

Данный оператор возвращает элемент массива, соответствующий индексу. Обратите внимание: индексация в Си начинается с 0, то есть правильными значениями индекса будут все значения в интервале

от 0 до < количество_элементов_массива> –1.

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

Пример: page[5] line[i] screen[j][k] matr[i–1][j+i–1]

Массивы можно, как и остальные переменные, инициализировать сразу при их объявлении. При этом элементы массива перечисляются через запятую, и все вместе заключаются в фигурные скобки. Пример: int a[ 6 ] = { 1, 2, 3, 4, 5, 6 };

Количество элементов в списке может быть меньше формального количества элементов массива – при этом инициализируются первые n элементов массива, где n – количество элементов в списке инициализации. С другой стороны, если указаны все элементы массива, то формальное количество элементов может отсутствовать: int a[ ] = { 1, 2, 3}).

Теперь вопрос: что напечатает такая программа?

#include < stdio.h> void main (void) { int i, a[10]; a[0] = 5; printf (" %d\n", *a); } На первый взгляд кажется, что она даже не будет компилироваться – ведь мы пытаемся взять значение по переменной, не являющейся адресом. Но, вопреки ожиданиям, она запустится и напечатает число 5. Как вы можете догадаться из этого, имя массива в Си является указателем на его первый элемент. Запомните это раз и навсегда – это очень важно.

3.2 Строки

Язык СИ не поддерживает отдельный строковый тип данных, но он позволяет определить строки двумя различными способами.

В первом используется массив символов, а во втором – указатель на первый символ массива. Объявление char а[10] указывает компилятору на необходимость резервирования места для максимум на 10 символов. Константа а содержит адрес ячейки памяти, в которой помещено значение первого объекта типа char.

Второй способ определения строки – это использование указателя на символ. Объявление char *b; задает переменную b, которая может содержать адрес некоторого объекта. Однако в данном случае компилятор не резервирует место для хранения символов и не инициализирует переменную b конкретным значением. Когда компилятор встречает инструкцию вида b=”Москва ”;, он производит следующие действия. Во-первых, как и в предыдущем случае, он создает в каком-либо месте объектного модуля строку Москва, за которой следует нулевой символ. Во-вторых, он присваивает значение начального адреса этой строки (адрес символа М) переменной b.

Константа (литерал) типа строка (string): " < текст> "

 

3.3 Структуры

СТРУКТУРА (запись) – совокупность разнотипных элементов. Элементы структуры (вернее, поля структуры), в отличие от элементов массива, не имеют индекса, но имеют собственное имя. Элементом структуры может быть массив любого типа.

Пример: Представление текущей даты:

– день месяца;

– название месяца;

– год;

 

Формат структура

struct [< тип(имя)_структуры> ] {

< список_описаний_элементов>

} [< список_объектов> ];

< список_описаний_элементов>: =

< имя_типа> < имя_переменной> [, имя_переменной [,...]];

< имя_типа> < имя_переменной> [, имя_переменной [,...]];

< имя_типа> < имя_переменной> [, имя_переменной [,...]];

Пример:

1. struct data { /* Дата */

int day_nom; /* День месяца */

char month_name[4]; /* Название месяца */

int year; /* Год */

};

Таким образом, мы объявили новый тип данных – Data, представляющий из себя структуру. Если мы хотим объявить переменную day типа Data, то это следует делать так:

struct Data day;

Доступ к полям структуры осуществляется с помощью оператора точка:

day.day_nom = 5;

day. month_name = " март";

day.year = 2002;


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал