Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

2. Массивы.

int x[ ]={1,2,3}; // Размерность определяет транслятор по числу инициаторов

float y[4][3]={ // Эквивалентная запись float y[4][3]={1,3,5,2,4,6,3,5,7};

{1,3,5 }, // 0-я строка

{2,4,6 }, // 1-я строка

{3,5,7 } // 2-я строка

}; // 3-я строка:0 (для static|extern) | "мусор" (для auto|register)

float y[4][3]={ // Заполняет только 1-й столбец

{1},

{2},

{3},

{4}

};

3. Символьный массив.

char msg[ ]="Синтаксическая ошибка в строке %s\n";

Длина массива определяется числом инициаторов. Конечный 0 включается.

4. Массив указателей.

/* Выдать название месяца по номеру */

char* month_name(int n){

static char* name[ ]={

"Hеправильный месяц",

"Январь",

"Февраль",

"Март",

"Апрель",

"Май",

"Июнь",

"Июль",

"Август",

"Сентябрь",

"Октябрь",

"Hоябрь",

"Декабрь"

};

return n<1||n>12 ? name[0]:name[n];

} /* End month_name */

5. Массив структур.

static struct{

char *mess; int window[4];

}message[ ]={

{"Имя входного файла", {14,12,35,14}},

{"Имя dbf-файла", {16,12,31,14}},

{"Имя файла программы", {12,12,37,14}}

};

14.5. Рекомендуемая структура программы

Программы на языках C и Basic в общем случае состоят из нескольких модулей, структура каждого из них строится по общим правилам.

14.5.1. Структура модуля на языке Basic

Раздел деклараций (Declarations)

общие невыполняемые инструкции

определения глобальных данных

Раздел процедур

тексты процедур и функций

14.5.2. Структура модуля на языке C

Декларации

определения символических констант (#define)

включаемые файлы (#include)

инструкции typedef, описания и определения внешних объектов

Функции

void main(void){

локальные определения и описания

выполняемые инструкции

}

тексты функций

Рекомендуемая структура не вполне корректна по следующим причинам:

- директивы препроцессора могут встречаться в любом месте файла, единственное ограничение в том, что они должны предшествовать определяемым константам;

- перед текстом функции main() могут быть определения других функций.

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Могут ли исполняемые инструкции записываться вне тела процедур?

  2. Может ли в одной области видимости исполняемая инструкция предшествовать декларации?

  3. Отличается ли время жизни для объектов static и extern?

  4. Объявление объекта с ключевым словом extern это определение или описание?

  5. Что произойдет, если число инициаторов будет больше числа элементов массива?

Контрольные вопросы

  1. В чем отличие применения ключевого слова static в языказ C и Basic?

  2. Укажите различия в действии инструкции public и атрибута extern?

  3. Чем инициируются определяемые объекты в языке Basic?

  4. Что определяет инструкция private?

  5. Что понимают под проектом приложения?

15. УКАЗАТЕЛИ, МАССИВЫ, СТРОКИ

Материал этого раздела посвящен указателям, связи указателей с массивами, выделению памяти по указанию программиста (так называемым динамическим объектам) и строкам. Следовательно, большая его часть относится к языку C, поскольку в языке Basic нет понятия указателя. Приемы работы со строками включены в этот раздел в связи с тем, что в языке C нет такого типа данных и все манипуляции со строковыми данными осуществляются с помощью библиотечных функций, большинство из которых в качестве аргументов и возвращаемого значения используют данные типа char * (указатель на тип char). Представляется логичным рассмотреть в соответствующем подразделе средства манипулирования со строками языка Basic, которые будут специально выделены.