日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言函数指针(结构体函数指针)

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言函数指针(结构体函数指针) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 20211126 這篇講得好

參考文章1:C語言函數指針(指向函數的指針)詳解

函數指針的定義形式:

returnType (*pointerName)(param list);

示例代碼:

#include <stdio.h>//返回兩個數中較大的一個 int max(int a, int b) {return a > b ? a : b; }int main() {int x, y, maxval;//定義函數指針int (*pmax)(int, int) = max; //也可以寫作int (*pmax)(int a, int b) = maxprintf("Input two numbers:");scanf_s("%d %d", &x, &y);maxval = (*pmax)(x, y);printf("Max value: %d\n", maxval);return 0; }

運行結果:

Input two numbers:1 2 Max value: 2

參考文章2:結構體中定義函數指針

c語言中,如何在結構體中實現函數的功能?把結構體做成和類相似,讓他的內部有屬性,也有方法, 這樣的結構體一般稱為協議類,提供參考: struct { int funcid; char *funcname; int (*funcint)(); /* 函數指針 int 類型*/ void (*funcvoid)(); /* 函數指針 void類型*/ }; 每次都需要初始化,比較麻煩 #include <stdio.h> typedef struct { int a; void (*pshow)(int); }TMP; void func(TMP *tmp) { if(tmp->a >10)//如果a>10,則執行回調函數。 { (tmp->pshow)(tmp->a); } } void show(int a) { printf("a的值是%d\n",a); } void main() {TMP test; test.a = 11; test.pshow = show; func(&test); } 終端顯示:a的值是11 /*一般回調函數的用法為: 甲方進行結構體的定義(成員中包括回調函數的指針) 乙方定義結構體變量,并向甲方注冊, 甲方收集N個乙方的注冊形成結構體鏈表,在某個特定時刻遍歷鏈表,進行回調。 當函數指針做為函數的參數,傳遞給一個被調用函數, 被調用函數就可以通過這個指針調用外部的函數,這就形成了回調<p>一般的程序中回調函數作用不是非常明顯,可以不使用這種形式</p><p>最主要的用途就是當函數不處在同一個文件當中,比如動態庫,要調用其他程序中的函數就只有采用回調的形式,通過函數指針參數將外部函數地址傳入來實現調用</p><p>函數的代碼作了修改,也不必改動庫的代碼,就可以正常實現調用便于程序的維護和升級</p>*/

20211126 這篇講得好

分析函數指針及其兩個主要用途

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的C语言函数指针(结构体函数指针)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。