Указатель на функцию

CBeginner
Практиковаться сейчас

Введение

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

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

Объявить и определить функцию, на которую будет ссылаться указатель

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

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

Объявить указатель на функцию

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

// function pointer
void (*fptr)(int, int);

Сохранить адрес функции в указателе

В этом шаге мы сохраним адрес функции, созданной на шаге 1, в указатель, созданный на шаге 2.

// assign address to function pointer
fptr = func;

Вызвать функцию с использованием указателя

В этом шаге мы вызовем функцию, созданную на шаге 1, с использованием указателя на функцию, созданного на шаге 2.

// function calling
func(2,3);
fptr(2,3);  // calling a function referring to pointer to a function

Напишите полный код

Откройте файл main.c в директории ~/project/.

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");

    // function pointer
    void (*fptr)(int, int);

    // assign address to function pointer
    fptr = func;

    // function calling
    func(2,3);
    fptr(2,3);  // calling a function referring to pointer to a function

    printf("\n\n\t\t\tCoding is Fun!\n\n\n");
    return 0;
}

Компилируйте и запустите код

Для компиляции кода откройте терминал и введите следующую команду:

gcc main.c -o main

Для запуска программы введите следующую команду:

./main

Резюме

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