Язык С




Введение - часть 3


Язык "C" включает основные конструкции потока управле- ния, требуемые для хорошо структуированных программ: группи- рование операторов, принятие решений (IF), циклы с проверкой завершения в начале (WHILE, FOR) или в конце (DO) и выбор одного из множества возможных вариантов (SWITCH). (Все эти возможности обеспечивались и в BCPL, хотя и при несколько отличном синтаксисе; этот язык предчувствовал наступившую через несколько лет моду на структурное программирование). В языке "C" имеются указатели и возможность адресной арифметики. Аргументы передаются функциям посредством копи- рования значения аргумента , и вызванная функция не может изменить фактический аргумент в вызывающей программе. Если желательно добиться "вызова по ссылке", можно неявно пере- дать указатель, и функция сможет изменить объект, на который этот указатель указывает. Имена массивов передаются указани- ем начала массивов, так что аргументы типа массивов эффек- тивно вызываются по ссылке. К любой функции можно обращаться рекурсивно, и ее ло- кальные переменные обычно "автоматические", т.е. Создаются заново при каждом обращении. Описание одной функции не может содержаться внутри другой, но переменные могут описываться в соответствии с обычной блочной структурой. Функции в "C" - программе могут транслироваться отдельно. переменные по от- ношению к функции могут быть внутренними, внешними, но из- вестными только в пределах одного исходного файла, или пол- ностью глобальными. Внутренние переменные могут быть автома- тическими или статическими. Автоматические переменные для большей эффективности можно помещать в регистры, но объявле- ние регистра является только указанием для компилятора и ни- как не связано с конкретными машинными регистрами. Язык "C" не является языком со строгими типами в смысле паскаля или алгола 68. Он сравнительно снисходителен к пре- образованию данных, хотя и не будет автоматически преобразо- вывать типы данных с буйной непринужденностью языка PL/1. Существующие компиляторы не предусматривают никакой проверки во время выполнения программы индексов массивов, типов аргу- ментов и т.д. В тех ситуациях, когда желательна строгая проверка ти- пов, используется специальная версия компилятора. Эта прог- рамма называется LINT очевидно потому, она выбирает кусочки пуха из вашей программы. Программа LINT не генерирует машин- ного кода, а делает очень строгую проверку всех тех сторон программы, которые можно проконтролировать во время компиля- ции и загрузки. Она определяет несоответствие типов, несов- местимость аргументов, неиспользованные или очевидным обра- зом неинициализированные переменные, потенциальные трудности переносимости и т.д. Для программ,которые благополучно про- ходят через LINT, гарантируется отсутствие ошибок типа при- мерно с той же полнотой, как и для программ, написанных, например, на АЛГОЛЕ-68. Другие возможности программы LINT будут отмечены, когда представится соответствующий случай.




Содержание  Назад  Вперед