Все, что вам нужно знать о функциях в C?



В этой статье вы познакомитесь с простым, но очень фундаментальным и важным понятием «Функции на языке C», а затем проведете его демонстрацию.

Эта статья познакомит вас с простым, но очень фундаментальным и важным концепцию функций на языке C и продолжите ее демонстрацией. Следующие указатели будут рассмотрены в этой статье,

Функции - это строительные блоки любого языка программирования. Проще говоря, функция в наборе операторов, которая принимает входные данные, выполняет определенную задачу, а затем возвращает выходные данные.
Идеология создания функции состоит в том, чтобы связать вместе набор связанных операторов, которые выполняют конкретную задачу. Так что вам не придется писать один и тот же код несколько раз для разных наборов входных данных. Вам просто нужно вызвать функцию для разных входов, она выполнит указанную задачу для данного входа и вернет результат. Вы можете вызывать функцию сколько угодно раз. В этом блоге мы узнаем каждый нюанс о функциях на языке программирования C.





Начнем с самого фундаментального вопроса.

Что такое функции в C?

Функции в C такие же, как и в любом другом языке программирования. Это набор кодов, связанных вместе для выполнения конкретной задачи. Набор кода, который должен быть выполнен, указан в фигурных скобках, то есть «{}».



Прежде чем научиться писать функцию на C, давайте сначала разберемся, в чем заключаются преимущества.

Преимущества функций в C

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

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



Функция также предоставляет абстракцию, где мы можем вызвать функцию и получить результат, не зная внутренней реализации.

Переходя к типам функции C

Алгоритм циклического планирования в c

Типы функций в C

Есть два типа функций:
Библиотечные функции
Пользовательские функции

Библиотечные функции - это те функции, которые уже определены в библиотеке C, такие как strcat (), printf (), scanf () и т. Д. Для использования этих функций вам просто нужно включить соответствующие файлы заголовков.
Пользовательские функции - это те функции, которые определяются пользователем. Эти функции созданы для повторного использования кода и для экономии времени и места.

Теперь, когда мы знаем о преимуществах создания функции, давайте разберемся, как объявить функцию в C.

Объявление и определение функции

Объявление функции:

Синтаксис объявления функции:

return_type function_name (data_type arg1, data_type arg2) int add (int x, int y) // объявление функции

В объявлении функции мы указываем имя функции, номер входного параметра, их типы данных и возвращаемый тип функции. Объявление функции сообщает компилятору список аргументов, ожидаемых функцией, с их типами данных и типом возвращаемого значения функции.

В объявлении функции указывать имена параметра необязательно, но указывать их типы данных обязательно.

int add (int, int) // объявление функции

Указанная выше функция будет принимать два целочисленных параметра.

Определение функции

 Image- Функции в C- Edureka
int add (int, int) // объявление функции return_type имя_функции (параметры) {тело функции}

Как показано на изображении выше, определение функции состоит из двух частей: заголовок функции и тело функции.

Заголовок функции: Заголовок функции такой же, как объявление функции, без точки с запятой. Заголовок функции содержит имя функции, параметр и тип возвращаемого значения.

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

  • Название функции: Это имя функции, с помощью которой мы можем вызывать функцию, когда и где необходимо.

  • Параметры: Параметры - это входные значения, которые будут переданы функции. Он сообщает о типах данных аргументов, их порядке и количестве аргументов, которые будут переданы функции. Параметры необязательны. Вы также можете иметь функции без параметров.

Тело функции: Тело функции - это набор операторов, выполняющих определенную задачу. Он определяет, что делает функция.

Пример:

int add (int x, int y) {int sum = x + y return (сумма)}

Рекомендуется объявить функцию до того, как мы ее определим и используем. В C мы можем объявить и определить функцию в одном и том же месте.

Пример:

#include int add (int, int) // объявление функции // определение функции int add (int x, int y) // заголовок функции {// тело функции int sum = x + y return (sum)} // Основная функция int main () {int sum = add (23, 31) printf ('% d', sum) return 0}

Как мы видим в приведенном выше примере, мы вызываем функцию с помощью оператора int sum = add (23, 31). Возвращаемое значение из функции сохраняется в переменной суммы.

Прежде чем мы продолжим, нужно понять еще одну важную концепцию парамента. Есть два типа параметров:

Фактический параметр : Параметры, которые передаются функциям при их вызове, называются фактическими параметрами. Например, 23 и 31 в приведенном выше примере являются фактическими параметрами.

Формальный параметр : Параметры, которые принимаются функциями, называются формальными параметрами. Например, x и y в приведенном выше примере являются формальными параметрами.

Давайте быстро продвинемся вперед и разберемся с различными способами вызова функции в C.

Вызов функции

Есть два способа вызвать функцию:

  • Звоните по цене
  • Звоните по ссылке

Звоните по цене

В методе вызова по значению значение фактического параметра передается в качестве аргумента функции. Значение фактического параметра не может быть изменено формальными параметрами.

В методе вызова по значению формальным и фактическим параметрам выделяется другой адрес памяти. Просто значение фактического параметра копируется в формальный параметр.

Пример:

#include void Call_By_Value (int num1) {num1 = 42 printf ('nInside Function, Number is% d', num1)} int main () {int num num = 24 printf ('nBefore Function, Number is% d', num ) Call_By_Value (num) printf ('nAfter Function, Number is% dn', num) return 0}

Вывод

В приведенном выше примере перед вызовом функции по значению значение num равно 24. Затем, когда мы вызываем функцию и передаем значение и меняем его внутри функции, оно становится 42. Когда мы вернемся и снова распечатаем значение of num в основной функции становится 24.

Звоните по ссылке

При вызове по ссылке адрес памяти фактического параметра передается функции в качестве аргумента. Здесь значение фактического параметра может быть изменено формальным параметром.

Одинаковый адрес памяти используется как для фактического, так и для формального параметра. Таким образом, если значение формального параметра изменяется, это также отражается в фактическом параметре.

В C мы используем указатели для реализации вызова по ссылке. Как вы можете видеть в приведенном ниже примере, функция Call_By_Reference ожидает указатель на целое число.

Теперь эта переменная num1 будет хранить адрес памяти фактического параметра. Итак, чтобы распечатать значение, которое хранится в адресе памяти, на который указывает num1, нам нужно использовать оператор разыменования, т.е. *. Итак, значение * num1 равно 42.

Оператор адреса & используется для получения адреса переменной любого типа данных. Таким образом, в операторе вызова функции Call_By_Reference (& num) адрес num передается так, что num можно изменить, используя его адрес.

пример

#include // определение функции void Call_By_Reference (int * num1) {* num1 = 42 printf ('nInside Function, Number is% d', * num1)} // Основная функция int main () {int num num = 24 printf ( 'nBefore Function, Number is% d', num) Call_By_Reference (& num) printf ('nAfter Function, Number is% dn', num) return 0}

Вывод

В этом примере значение num изначально равно 24 внутри функции main. После того, как он передан в функцию Call_By_Reference и значение изменено формальным параметром, оно также изменилось и для фактического параметра. Вот почему, когда мы печатаем значение num после печатаемой функции 42.

Переходим к типам пользовательских функций в C

Типы определяемых пользователем Функция в C

Существуют различные типы пользовательских функций в зависимости от типа возвращаемого значения и переданных аргументов.

Продолжаем без переданных аргументов и без возвращаемого значения

1. аргументы не переданы и значение не возвращается

Синтаксис:

объявление функции:

void function () вызов функции: определение функции function (): void function () {операторы}

пример

php.mysql_fetch_array
#include void add () void add () {int x = 20 int y = 30 int sum = x + y printf ('sum% d', sum)} int main () {add () return 0}

Продолжаем без аргументов, но с возвращаемым значением

2 Аргументы не переданы, но есть возвращаемое значение

Синтаксис:

объявление функции:

int function () вызов функции: function () определение функции: int function () {операторы возвращают a}

Пример:

#include int add () int add () {int x = 20 int y = 30 int sum = x + y return (sum)} int main () {int sum sum = add () printf ('сумма% d', сумма) return 0}

Продолжаем с переданными аргументами, но без возвращаемого значения

3 Аргумент передан, но нет возвращаемого значения

Синтаксис:

объявление функции:

void function (int) вызов функции: function (a) определение функции: void function (int a) {statement}

Пример:

#include void add (int, int) void add (int x, int y) {int sum = x + y return (sum)} int main () {add (23, 31) return 0}

Продолжаем с переданным аргументом и возвращаемым значением

4 Переданный аргумент и возвращаемое значение

Синтаксис:

объявление функции:

int function (int) вызов функции: function (a) определение функции: int function (int a) {операторы возвращают a}

пример

#include int add (int, int) int add (int x, int y) {int sum = x + y return (sum)} int main () {int sum = add (23, 31) printf ('% d') , сумма) return 0}

Теперь давайте быстро рассмотрим функции библиотеки C, которые важны для написания программы.

Функции библиотеки C

Библиотечные функции - это функции в C, которые предопределены и присутствуют по умолчанию. Вам просто нужно включить в программу конкретный файл заголовка, и вы можете использовать функции, определенные в этом файле заголовка. Каждый файл заголовка предоставляет определенные функции. Расширение файла заголовка - .h.

Например, чтобы использовать функции printf / scanf, нам нужно включить в нашу программу stdio.h, который обеспечивает функциональность в отношении стандартного ввода / вывода.

Ниже приводится список файлов заголовков.

одинstdio.hСтандартный заголовочный файл ввода / вывода
2minting.hЗаголовочный файл ввода / вывода консоли
3string.hБиблиотечные функции, связанные со строками, такие как gets (), put () и т. Д.
4stdlib.hОбщие библиотечные функции, такие как malloc (), calloc (), exit () и т. Д.
5math.hФункции, связанные с математическими операциями, такие как sqrt (), pow () и т. Д.
6time.hФункции, связанные со временем
7ctype.hФункции обработки символов
8stdarg.hФункции с переменным аргументом
9signal.hФункции обработки сигналов
10setjmp.hФункции прыжка
11locale.hФункции локали
12errno.hФункции обработки ошибок
13assert.hФункции диагностики

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

На этом мы подошли к концу статьи о функциях в языке Си. Если вы хотите узнать больше, ознакомьтесь с , надежная компания онлайн-обучения. Курс обучения и сертификации по Java J2EE и SOA от Edureka разработан, чтобы обучить вас базовым и продвинутым концепциям Java, а также различным средам Java, таким как Hibernate и Spring.

Есть вопрос к нам? Пожалуйста, укажите это в разделе комментариев этого блога, и мы свяжемся с вами как можно скорее.