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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

函数名作为参数传递

發(fā)布時(shí)間:2023/12/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数名作为参数传递 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

假如不知道signal的函數(shù)原型,考慮child_handler函數(shù)的參數(shù)從哪里來(lái)?

?

void child_handler(int sig) { if (sig == SIGINT) kill(pid_parent, SIGUSR1); } int main(void) { ...... signal(SIGINT, child_handler); ...... }

1、無(wú)參無(wú)返回值的函數(shù)名作為另一個(gè)函數(shù)的參數(shù)

?

?

#include <stdio.h> //定義handler是一個(gè)函數(shù)指針類型,無(wú)參無(wú)返回值 typedef void (*handler)(void); void output(void) { printf("Hello World!\n"); } //無(wú)參函數(shù)作為另一個(gè)函數(shù)的參數(shù) void test_func(handler func) { func(); } int main(void) { test_func(output); return 0; }

?

運(yùn)行結(jié)果:Hello World!
2、有參有返回值的函數(shù)名作為另一個(gè)函數(shù)的參數(shù) #include <stdio.h> //定義handler是一個(gè)函數(shù)指針類型,有兩個(gè)參數(shù)和返回值 typedef int (*handler)(int, int); int add(int a, int b) { return a+b; } //有參有返回值函數(shù)作為另一個(gè)函數(shù)的參數(shù) int test_func(int m, int n, handler func) { return func(m, n); } int main(void) { int a, b, sum; a = 3; b = 4; sum = test_func(a, b, add); printf("sum = %d\n", sum); return 0; } 運(yùn)行結(jié)果:sum = 7
對(duì)于開(kāi)始的疑惑,如果只從C語(yǔ)言的角度理解,原理是在執(zhí)行完 signal(SIGINT, child_handler); 函數(shù)后,signal函數(shù)會(huì)將第一個(gè)參數(shù) SIGINT 傳遞給 child_handler 函數(shù)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/lialong1st/p/7756665.html

總結(jié)

以上是生活随笔為你收集整理的函数名作为参数传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。