Основы языка C
Содержание
Введение
Язык C был разработан в начале 70-х годов 20 века компанией AT&T, и до сих пор является одним из основных языков системного программирования. Являясь языком высокого уровня, C в то же время предоставляет возможности, присущие программированию на ассемблере, такие как низкоуровневый доступ к памяти. Программы, написанные на C, близки по эффективности к ассемблерным программам.
Важной особенностью языка C является переносимость программ. Одна и та же программа часто может быть скомпилирована для исполнения на различных процессорах с минимальными изменениями.
Структура программы
Простейшая структура программы
Простейшая законченная программа состоит из одной функции main:
<source lang="c"> int main(void) {
return 0;
} </source>
Функции и процедуры
Весь исполняемый код содержится в функциях (называемых также подпрограммами или процедурами). Функция - это обособленный участок кода, который выполняет определенные действия и может быть многократно вызван из других частей программы. Функция может возвращать значение, являющееся результатом ее исполнения. Вызывающая программа может передать в функцию параметры (аргументы), от значения которых зависит результат выполнения функции. В этом отношении функции в программе напоминают математические функции.
Определение функции выглядит следующим образом:
<source lang="c"> int plus(int a, int b) {
return a + b;
} </source>
Этот код определяет функцию с именем plus, которая принимает 2 аргумента a и b, являющихся целыми числами (int), и возвращает целое число. В фигурные скобки заключено тело функции, то есть последовательность операций, которые будут выполняться при каждом вызове. В данном примере, функция возвращает (return) сумму своих аргументов.
Для указания того, что функция не принимает аргументов и/или не возвращает значения, используется зарезервированное слово void:
<source lang="c">
/* Не принимает аргументы, не возвращает значение */ void init(void) {
/* Тело функции */
}
/* Принимает аргументы, не возвращает значение */ void start(int number) {
/* Тело функции */
}
/* Не принимает аргументы, возвращает значение */ int receive(void) {
return 0;
}
</source>
Выполнение функции, возвращающей значение, всегда должно завершаться оператором return.
Тело функции состоит из объявлений переменных и операторов. Оператор - это наименьшая структурная единица языка, команда. Словом оператор также нередко называют операцию (например, умножение). Объявление переменных будет рассмотрено в следующих разделах.
Последовательные операторы отделяются друг от друга символом ; (точка с запятой). Основные виды операторов:
- Присваивание <source lang="c">a = 12; // переменной a присваивается значение 12</source>
- Вызов функции <source lang="c">do_something(); </source>
- Блок инструкций (составной оператор) <source lang="c">{a = 12; b=14;} // присваиваются значения переменным a и b. Последовательность двух операторов рассматривается как один оператор </source>
- Условный оператор. Исполняет инструкцию, только если выполняется определенное условие. <source lang="c"> if (b > 10) a = 0; // переменной a присваивается значение 0, если значение переменной b больше 10</source>
- Цикл. Циклически исполняет инструкцию, пока выполняется определенное условие. <source lang="c"> while (b > 10) do_something(); // вызывать функцию do_something(), пока значение переменной b больше 10</source>
Более подробно различные операторы будут рассмотрены в последующих разделах.
Переменные и типы данных
Определение переменных
Базовые типы данных
Массивы
Структуры
Указатели
Условные операторы и циклы
Условный оператор if
Условный оператор, варианты использования:
- простейший:
if( a==1 ){ b=2 };
- с веткой "иначе":
if( a==1 ){ b=2 }else{ c=3 };
- с 2 ветками "иначеесли" и веткой "иначе":
if( a==1 ){ b=2 }elseif( a==2 ){ c=3 }elseif( a==3 ){ d=4 }else{ e=5 };
- со сложным условием:
if( a==1 && (c==0 || q==3) ){ b=2 };
Условный оператор switch
Цикл for
Оператор цикла, варианты использования:
- простейший:
for( int a=1; a<10; a++ ){ b=b+a };
- с двойной переменной:
for( int a=1,b=2; a<10 && b>5 ; a++,b-- ){ c=c+3*b+a };