Язык программирования C

Скачать в pdf «Язык программирования C»


В следующем фрагменте кода анализируется имя SYSTEM и принимается решение, какую версию заголовочного файла включать в программу:


#if SYSTEM == SYSV


#define HDR «sysv.h»


#elif SYSTEM == BSD


#define HDR «bsd.h»


#elif SYSTEM == MSDOS


#define HDR «msdos.h»


#else


#define HDR «default.h»


#endif


#include HDR


Директивы #ifdef и #ifndef — это специальные формы условной директивы для проверки того, определено то или иное имя или нет. Первый пример директивы #if, приведенный в начале раздела, можно было бы записать так:


#ifndef HDR #define HDR


/* здесь находится содержимое файла hdr.h */


#endif

Глава 5

Указатели и массивы


Указатель — это переменная, содержащая адрес другой переменной. Указатели очень широко используются в С — частично потому, что иногда определенные операции можно выполнить только с их помощью, а частично потому, что их использование обычно позволяет записать код более компактно и эффективно, чем другими способами. Указатели и массивы тесно связаны между собой; в этой главе рассматривается эта взаимосвязь и показывается, как ею пользоваться.


Об указателях говорят, что наряду с оператором goto — это верный способ запутать программу до невозможности. Это, несомненно, правда — если пользоваться ими бездумно. Совсем нетрудно так организовать работу с указателем, чтобы он указывал на что попало. Но при тщательном подходе с помощью указателей можно добиться большей ясности и простоты кода, чем без них. Именно это мы и постараемся продемонстрировать.


Основное изменение, внесенное в эту часть языка стандартом ANSI, — это четкая формулировка правил обращения с указателями, которые по сути сводят воедино то, что хорошие программисты уже давно делают, а хорошие компиляторы уже давно требуют от программистов. Кроме того, теперь стандартным объявлением нетипизированного указателя является void * (указатель на пустой тип void), а не char *.

Скачать в pdf «Язык программирования C»