検索
ホームページよくある問題C言語でコールバック関数を実装する方法

C言語でコールバック関数を実装する方法

Apr 16, 2019 pm 02:12 PM
C言語折り返し電話

コールバック関数は、統一されたインターフェイスを通じてさまざまな関数を実装することです。C 言語のコールバック関数は、渡されたさまざまなパラメータに従って、コード内でさまざまなコールバック関数を呼び出すことです。

コールバック関数は、プログラム A です。メンバーによって明示的に呼び出すことができない関数。コールバック関数は、コールバック関数のアドレスを呼び出し元に渡すことによって呼び出されます。コールバック関数の使用は必須であり、統一されたインターフェイスを通じてさまざまなコンテンツを実装したい場合、コールバック関数は非常に適しています。

C言語でコールバック関数を実装する方法

【おすすめチュートリアル: C言語チュートリアル

たとえば、いくつかの異なるデバイスに対して異なる表示関数を作成しました。

void TVshow(); 
void ComputerShow(); 
void NoteBookShow()...等等。

これは、統一された表示関数を使用したいためであり、現時点では失われた関数を使用できます。

void show(void (*ptr)());

使用すると、渡されたパラメータに従ってさまざまなコールバック関数が呼び出されます。

プログラミング言語が異なると、構文が異なる場合があります。ここでは C 言語のコールバック関数の例を示します。1 つのコールバック関数はパラメーターを受け取りませんが、もう 1 つのコールバック関数はパラメーターを受け取ります。

#include <stdlib.h>
#include <stdio.h>
int Test1()
{
    int i;
    for(i=0; i<30; i++)
    {
        printf("The %d th charactor is: %c\n", i, (char)(&#39;a&#39; + i%26));
    }
    return 0;
}
int Test2(int num)
{
    int i;
    for (i=0; i<num; i++)
    {
        printf("The %d th charactor is: %c\n", i, (char)(&#39;a&#39; + i%26));
    }
    return 0;
}
void Caller1( void (*ptr)() )//指向函数的指针作函数参数
{
    (* ptr)();
}
void Caller2(int n, int (*ptr)())//指向函数的指针作函数参数,这里第一个参数是为指向函数的指针服务的,
{
    //不能写成void Caller2(int (*ptr)(int n)),这样的定义语法错误。
    (* ptr)(n);
}
int main()
{
    printf("************************\n");
    Caller1(Test1);     //相当于调用Test1();
    printf("&&&&&&************************\n");
    Caller2(30, Test2); //相当于调用Test2(30);
    return 0;
}

レンダリングは次のとおりです

C言語でコールバック関数を実装する方法

上記の呼び出しは、コールバック関数のアドレスを呼び出し元に渡すことによって実装されますが、注意が必要です。パラメーターを使用したコールバック関数。

コールバックを実装するには、まず関数ポインターを定義する必要があります。ここでは関数ポインタの定義について簡単に説明します。

例:

int (*ptr)();

ここで、ptr は関数ポインタであり、(*ptr) の括弧は省略できません。

括弧の優先順位がより高いためです。アスタリスクの宣言なので、戻り値の型が整数の関数宣言になります。

要約: 以上がこの記事の全内容です。皆様のお役に立てれば幸いです。

以上がC言語でコールバック関数を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。