- •Предисловие
- •Контрольные вопросы
- •Библиографический список
- •Тема 2 Переменные и базовые типы данных языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема3 Организация циклов в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 4 Принятие решений. Условные операторы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 5 Числовые массивы в языке программирования с
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 6 Символьные массивы в языке с. Работа со строками
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 7 Указатели в языке программирования с
- •Int *ptr; // объявили указатель на целую переменную
- •Контрольные вопросы
- •Библиографический список
- •Тема 8 Указатели и массивы в языке с
- •Int data[7]; // обычный массив
- •Int *pd[7]; // массив указателей
- •Контрольные вопросы
- •Библиографический список
- •Тема 9 Динамическое распределение памяти в языке с
- •If (!ptr) // условие логического отрицания
- •If (!ptr) // условие логического отрицания
- •Контрольные вопросы
- •Библиографический список
- •Тема 10 Функции Общие сведения о функциях языка с
- •Fun(тип имя_перем1, тип имя_перем2, , тип имя_перем n)
- •Контрольные вопросы
- •Библиографический список
- •Тема 11 Указатели и функции в языке программирования с
- •Тип_возвращаемый_функцией(*имя_указателя_на_функцию)(аргументы);
- •Контрольные вопросы
- •Библиографический список
- •Тема 12 Файловый ввод/вывод в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 13 Структуры – производные типы данных языка с
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Контрольные вопросы
- •Библиографический список
- •Тема 14 Объединения и перечислимые типы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 15 Структуры и функции языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема 16 Операции с разрядами (битами) в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 17 Программы, состоящие из нескольких файлов, на языке с
- •Спецификатор extern
- •Спецификатор static
- •Спецификатор register
- •Спецификатор auto
- •Контрольные вопросы
- •Библиографический список
- •Тема 18 Рекурсивные алгоритмы и функции
- •Переместить (a, b);
- •Контрольные вопросы
- •Библиографический список
- •Тема 19 Препроцессор языка с
- •Директива #define
- •Директива #error
- •Директива #include
- •Директивы условной компиляции
- •2_ Я_последовательность операторов программного кода
- •3_ Я_последовательность операторов программного кода
- •Директива #line
- •Директива #pragma
- •Предопределенные символические константы
- •Макрос подтверждения assert
- •Контрольные вопросы
- •Библиографический список
- •Тема 20 Программы на языке с при использовании статически подключаемой библиотеки
- •Контрольные вопросы
- •Библиографический список
- •Тема 21 Использование аргументов командной строки в с
- •Контрольные вопросы
- •Контрольная работа № 2 Покупки в супермаркете
- •Приложение Управление конфигурациями проекта в Visual Studio 2010
Контрольные вопросы
Какой размер одномерного символьного массива должен быть объявлен для записи в него строки из 5 символов?
Как организуются многомерные символьные массивы в языке С?
Как организуется индексирование символьных массивов в языке С?
Как следует объявить символьный массив для записи в него трех строк различной длины?
Как следует организовать посимвольное заполнение одномерного массива?
Сколько потребуется операторов цикла для вывода на консоль двухмерного символьного массива (строк различной длины)?
Какие функции используются для считывания с консоли символьных массивов?
Для каких функций включаются в программу заголовочные файлы ctype.h и string.h?
Что такое лексиграфическое упорядочивание строк?
Библиографический список
Кочан С. Программирование на языке С : пер. с англ./С. Кочан. – 3-е изд.– М.: Вильямс, 2007. – 496 с.
Шилдт Г. Полный справочник по С : пер. с англ./Г. Шилдт. – 4-е изд. – М.: Вильямс, 2007. – 704 с.
Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си (+CD) : учеб. пособие / Б.С. Хусаинов. – М.: Финансы и статистика, 2004. – 464 с.
Тема 7 Указатели в языке программирования с
Изучается указатель как средство доступа к данным, определяются адреса переменных основных типов. Рассматриваются допустимые операции с указателями, использование указателей в элементарных задачах программирования.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
По краткому определению, указатель – это переменная, содержащая адрес другой переменной [1]. Так как указатель содержит адрес переменной (объекта), это дает возможность «косвенного» доступа к ней.
Для понимания работы и назначения указателей рассмотрим упрощенную схему организации памяти компьютера. Память представляет собой массив последовательно пронумерованных или адресованных ячеек, с которыми можно работать по отдельности или связанными кусками. Известно, что различным типам данных отводится определенное количество байтов памяти. Поэтому указатель – это группа ячеек, в которых может храниться адрес. Например, если переменная ch имеет тип char, а ptr (англ. pointer – «указатель») есть указатель на переменную ch, то взятие адреса переменной ch осуществляется с помощью унарного (одноместного) оператора &, т.е.
ptr = &ch;
Приведенная инструкция означает, что переменной ptr присваивается адрес ячейки ch. Принято считать, что ptr указывает на ch. Оператор & применяется только к объектам, расположенным в памяти: переменным, элементам массива. Операндом оператора & не могут быть ни выражение, ни константа, ни регистровая переменная [1]. Унарный оператор & называется еще оператором адресации [2].
Имена указателям даются в соответствии с правилами, приятыми в языке программирования С для обычных переменных.
Унарная операция * называется операцией ссылки по указателю (indirection), или разыменования (dereferencing). Если применить ее к указателю, то получим объект, на который он указывает. Рассмотрим пример. Пусть х и у – целые переменные, а *ptr – указатель на такую переменную. Поставим задачу присвоения переменной у значения переменной х с помощью указателя. Фрагмент С-кода будет следующим:
int x = 1, y = 2;