Функции в C очень просты, однако из-за некоторых особенностей реализации — они немного ограничены.
- функции могут иметь ограниченное или любое количество аргументов;
- функции могут возвращать либо только одно значение, либо не возвращать ничего вообще.
В C аргументы передаются в функцию по значению, т.е. — мы не можем изменить значение аргумента вне функции. Для того, что бы реализовать такое изменение — мы можем использовать указатели (pointers), о которых мы поговорим позже.
Объявление функции выглядит так:
int foo(int bar) {
/* do something */
return bar * 2;
}
int main() {
foo(1);
}
Функция foo() имеет один аргумент bar. Функция получает целое число, умножает его на два и возвращает результат.
Что бы вызвать функцию foo() с аргументом 1, мы используем такой синтаксис:
foo(1);
В C функции должны быть объявлены перед их использованием в коде. Они могут быть объявлены и реализованы позже с использованием заголовочных файлов (header files — файлы, с расширением .h), либо — они могут быть реализованы в порядке их использования.
Правильное использование функций выглядит так:
/* объявление функции */
int foo(int bar);
int main() {
/* вызов функции foo из main */
printf("The value of foo is %d", foo(1));
}
int foo(int bar) {
return bar + 1;
}
Мы так же можем создать функцию, которая не возвращает никакого значения, используя ключевое слово void:
void moo() {
/* выполняем что-то, что не возвращает значения */
}
int main() {
moo();
}
Создадим функцию, которая вызывается в цикле for функции main(), получает один аргумент и, если переданное значение больше 10 — пишет сообщение:
#include <stdio.h>
/* function declaration */
int print_big(int number);
int main() {
int array[] = { 1, 11, 2, 22, 3, 33 };
int i;
for (i = 0; i < 6; i++) {
print_big(array[i]);
}
return 0;
}
int print_big(int number) {
if (number > 10) {
printf("%d is bigger then 10.n", number);
}
}
Результат:
$ ./functions 11 is bigger then 10. 22 is bigger then 10. 33 is bigger then 10.
3 477 views