Изучаем Си [Александр Борисович Крупник] (pdf) читать постранично, страница - 12

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

явно: строка
person *repka, *root
заменяет
struct personage *repka, *root;
и теперь вместо
repka = malloc(sizeof (struct personage *))
можно написать
repka = malloc (sizeof(person *));
Задача 8.9. Перепишите программу, показанную в листинге
8 15, объявляя новые типы с помощью typedef.
Естественно, typedef позволяет создавать и другие новые
типы. Чтобы понять, как это делается, полезно простое
правило: дописывание typedef слева от любого объявления
переменной, возвышает ее до названия нового типа. То есть,
конкретная переменная, имеющая имя и занимающая память,
после приписывания typedef превращается просто в имя
нового типа.
Пусть, например, в программе объявлена переменная типа
int:
int s32;

192

поставив слева typedef:
typedef int s32;
мы уничтожаем переменную s32 и превращаем ее в имя
нового типа, причем переменные нового типа будут такими
же, какой была s32 до приписывания слова typedef. Новым
типом можно пользоваться наравне с базовыми типами:
double, char и т.п:
s32 a=0, i,j;
Теперь a, i , j — простые переменные типа s32. Все они
такие же, какой была s32, то есть типа int.
Возьмем другое объявление:
int arr100[100];,
создающее массив из ста элементов типа int. Приписывание
слева слова typedef уничтожает сам массив arr100[100]
и создает новый тип arr100: массив из ста элементов типа
int. Теперь переменные этого типа можно объявлять и
использовать обычным образом:
typedef int arr100[100];
arr100 a;
int i;
for(i=0;i

Слева направо

< >=

Слева направо

== !=

Слева направо

&

Слева направо

^

Слева направо

|

Слева направо

&&

Слева направо

||

Слева направо

?:

Справа налево

= += -= *= /= %= &= ^= |= =

Справа налево

,

Слева направо
Приоритет унарных операторов +, - и * выше, чем
соответствующих бинарных.

223

Что дальше?
Здесь не делают домашних работ. Мы поможем
предложениями и советами, но сначала вы должны написать
что-то сами. Никто не хочет быть невежливым, но
большинство из нас считают, что делать чью-то домашнюю
работу — жестоко, потому что не дает правильно учиться.
Программированием, как и любым другим ремеслом надо
заниматься. Мы уже умеем делать домашние задания, по
крайней мере, не хуже вас и поэтому в таких занятиях не
нуждаемся.
Из конференции comp.lang.c.moderated
В Предисловии я написал, что хочу видеть свою книгу одной
из первых в длинном списке книг по программированию и
алгоритмам. И раз вы читаете эти строки, мое желание
сбылось. Хочу поздравить терпеливого читателя, который стал
пусть неопытным, пусть начинающим, но программистом.
Перед ним длинная и увлекательная дорога, предсказать все
многочисленные повороты которой невозможно.
Но хотелось бы пожелать, чтобы следующий шаг был связан с
«лучшей второй книгой всех времен и народов по языку Си»
— классической «Язык программирования Си» Брайана
Кернигана и Денниса Ритчи.
Если бы я начинал изучение языка Си сейчас, то лучшей (по
крайней мере, для меня) была бы моя собственная книжка. К
сожалению, мне, как и многим другим, приходилось учиться
по книге Кернигана и Ритчи. И надо честно сказать, что многое
в ней давалось мучительно, а кое-что (рекурсию, например) я
так тогда и не понял. Поэтому в своей книге я постарался
максимально подробно рассказать о самом трудном. Надеюсь,
что теперь чтение K&R (так во всем мире называют книгу
Кернигана и Ритчи) будет для вас не только поучительным, но
также легким и приятным.
Изучение Си, как и любого другого языка программирования,
немыслимо
без
упражнений.
Чтобы
научиться
программировать, нужно программировать. Задачи, которые

224

вы будете решать на первых порах, не должны быть слишком
сложными. Старайтесь начинать с самого главного,
постепенно подключая все новые и новые возможности.
Разбивайте задачу на части, которые можно отладить отдельно
друг от друга. Читайте документацию. Не поддавайтесь
панике. И тогда к вам придет удача.

Литература
1. Б.Керниган, Д. Ритчи «Язык программирования Си».
Москва «Финансы и статистика», 1992
2. Ч.Уэзерелл «Этюды для программистов». М. Мир, 1982
3. Б.Керниган,
Ф.Плоджер
«Элементы
программирования», М. «Радио и связь», 1984
4. Ф.П.Брукс мл. «Как проектируются и
программные комплексы», М. «Наука», 1979

стиля
создаются

5. Ч. Петзолд «Программирование для Windows 95 в двух
томах», BHV, 1996

225

Об авторе
Крупник Александр
Борисович, родился
26 июня 1957 года в
г. Горьком. Окончил
Радиофизический
факультет
Горьковского
государственного
университета, канд.
ф.-мат. наук.

226