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



         

Основные сведения - часть 2


#define maxline 1000 main() /* find all lines matching a pattern */ { char line[maxline];

while (getline(line, maxline) > 0) if (index(line, "the") >= 0) printf("%s", line); } getline(s, lim) /* get line into s, return length * char s[]; int lim; { int c, i;

i = 0; while(--lim>0 && (c=getchar()) != EOF && c != '\n') s[i++] = c; if (c == '\n') s[i++] = c; s[i] = '\0'; return(i); }

index(s,t) /* return index of t in s,-1 if none */ char s[], t[]; { int i, j, k;

for (i = 0; s[i] != '\0'; i++) { for(j=i, k=0; t[k] !='\0' && s[j] == t[k]; j++; k++) ; if (t[k] == '\0') return(i); } return(-1); }

Каждая функция имеет вид имя (список аргументов, если они имеются) описания аргументов, если они имеются

{ описания и операторы , если они имеются }

Как и указывается, некоторые части могут отсутствовать; минимальной функцией является

dummy () { }

которая не совершает никаких действий.

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

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

Оператор return служит механизмом для возвращения значения из вызванной функции в функцию, которая к ней обратилась. За return может следовать любое выражение:

return (выражение)

Вызывающая функция может игнорировать возвращаемое значение, если она этого пожелает. Более того, после return может не быть вообще никакого выражения; в этом случае в вызывающую программу не передается никакого значения. Управление также возвращется в вызывающую программу без передачи какого-либо значения и в том случае, когда при выполнении мы "проваливаемся" на конец функции, достигая закрывающейся правой фигурной скобки. Eсли функция возвращает значение из одного места и не возвращает никакого значения из другого места, это не является незаконным, но может быть признаком каких-то неприятностей. В любом случае "значением" функции, которая не возвращает значения, несомненно будет мусор. Отладочная программа lint проверяет такие ошибки.

Механика компиляции и загрузки "C"-программ, расположенных в нескольких исходных файлах, меняется от системы к системе. В системе "UNIX", например, эту работу выполняет команда 'cc', упомянутая в лекции №1. Предположим, что три функции находятся в трех различных файлах с именами main.с, getline.c и index.с. Тогда команда




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