函數名作為參數傳遞

假如不知道signal的函數原型,考慮child_handler函數的參數從哪里來?

?

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

1、無參無返回值的函數名作為另一個函數的參數

?

?

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

?

運行結果:Hello World!

2、有參有返回值的函數名作為另一個函數的參數
#include <stdio.h>  //定義handler是一個函數指針類型,有兩個參數和返回值  
typedef int (*handler)(int, int);  int add(int a, int b)  
{  return a+b;  
}  //有參有返回值函數作為另一個函數的參數  
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;  
}  
運行結果:sum = 7

對于開始的疑惑,如果只從C語言的角度理解,原理是在執行完 signal(SIGINT, child_handler); 函數后,signal函數會將第一個參數 SIGINT 傳遞給 child_handler 函數。

?

轉載于:https://www.cnblogs.com/lialong1st/p/7756665.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454186.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454186.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454186.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

易語言神經網絡驗證碼識別_遞歸神經網絡 GRU+CTC+CNN 教會驗證碼識別

利用 NLP 技術做簡單數據可視化分析Chat 簡介&#xff1a;用遞歸神經網絡采用端到端識別圖片文字&#xff0c;遞歸神經網絡大家最早用 RNN &#xff0c;缺陷造成梯度消失問題&#xff1b;然后采用了 LSTM&#xff0c;解決 RNN 問題&#xff0c;并且大大提高準確率&#xff1b;現…

GCC 生成的符號表調試信息剖析

GCC把C語言源文件&#xff08;&#xff07;.c&#xff07;&#xff09;編譯成匯編語言文件&#xff08;&#xff07;.s&#xff07;&#xff09;&#xff0c;匯編器把匯編語言文件翻譯成目標文件&#xff08;&#xff07;.o&#xff07;&#xff09;&#xff0c;最后由鏈接器鏈…

《操作系統》OS學習(一):OS相關

清華大學操作系統OS&#xff08;向勇、陳渝&#xff09;視頻地址&#xff1a;http://www.xuetangx.com/courses/course-v1:TsinghuaX30240243Xsp/about 在ucore實驗中&#xff0c;一些基本的常用工具如下&#xff1a; 命令行shell: bash shell -- 有對文件和目錄操作的各種命令…

Android4.0藍牙使能的詳細解析

毫無疑問&#xff0c;bluetooth的打開是在Settings中進行的操作。因此&#xff0c;冤有頭&#xff0c;債有主&#xff0c;我們來到了Settings.java中&#xff0c;果然發現了相關的代碼如下&#xff1a; mBluetoothEnabler new BluetoothEnabler(context, new Switch(context));…

第一次沖刺

本人小組分工角色&#xff1a;產品負責人 本組沖刺訂單介紹&#xff1a;經過小組的成員討論&#xff0c;我們大概確立了一個沖刺的訂單是完成一個簡易的長沙學院網站項目。 最后完成情況概述&#xff1a;經過大約兩周的努力&#xff0c;我們組的編程人員運用python構建了一個簡…

移動端導出excel_連載系列【4】Excel開發移動端quot;APPquot;

前三篇文章介紹了百度地圖生成器、源代碼編輯器、GPS經緯度批量轉換工具、源代碼編輯器中添加自定義功能按鈕和地圖控件。這些寫好的Java Script代碼雖然可以實現所有期望的結果&#xff0c;但畢竟不是一個HTML文件&#xff0c;不便于傳播和使用&#xff0c;更無法變成一個類似…

《操作系統》OS學習(二):啟動、中斷、異常

Bootloader:加載OS。操作系統一開始是放在DISK&#xff08;硬盤&#xff09;中&#xff0c;并不是放在內存中。 BIOS&#xff1a;基本I/O處理系統。存放在ROMRead-Only Memory&#xff09;只讀存儲中 BIOS&#xff08;Basic Input/Output System&#xff09;基本輸入輸出系統。…

[GCC for C]編譯選項---IDE掩蓋下的天空

編譯選項 ---------IDE掩蓋下的天空 /*************************************** * gcc for c language ***************************************/ Single Source to Executable $ gcc helloworld.c [-o howdy] 默認生成的名字a.exe ______________________________________ …

2016級算法第二次上機-F.ModricWang's Number Theory II

891 ModricWangs Number Theory II 思路 使得序列的最大公約數不為1&#xff0c;就是大于等于2&#xff0c;就是找到一個大于等于2的數&#xff0c;它能夠整除序列中的所有數。 考慮使得一個數d整除數組中所有數的代價&#xff1a; 如果一個數不能被b整除&#xff0c;那么可以花…

常用css屬性集(持續更新…)

禁止換行&#xff0c;超出部分顯示…&#xff1a;a. 代碼&#xff1a;.hide_word{ max-width: 100px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } b. 效果&#xff1a; 本文轉自 bilinyee博客&#xff0c;原文鏈接&#xff1a; http://blog.51cto.co…

parallels網絡初始化失敗_33 個神經網絡「煉丹」技巧

自然語言處理Andrej Karpathy 是深度學習計算機視覺領域、與領域的研究員。博士期間師從李飛飛。在讀博期間&#xff0c;兩次在谷歌實習&#xff0c;研究在 Youtube 視頻上的大規模特征學習&#xff0c;2015 年在 DeepMind 實習&#xff0c;研究深度強化學習。畢業后&#xff0…

《操作系統》OS學習(三):系統調用

例子 首先看一個標準C庫的例子&#xff1a;當我們程序中使用了C庫中的printf()函數&#xff0c;實際在底層是在內核態中調用了write()函數。圖中右側則是將程序代碼與C庫都算到應用程序中&#xff0c;內核提供了一個系統調用接口。 從這個例子我們可以得到以下幾點&#xff1a…

cygwin/gcc與MinGW

cygwin/gcc和MinGW都是gcc在windows下的編譯環境&#xff0c;但是它們有什么區別?在實際工作中如何選擇這兩種編譯器呢?cygwin/gcc完全可以和在linux下的gcc劃等號&#xff0c;這個從boost庫的劃分中就可以看出來端倪&#xff0c;cygwin下的gcc和linux下的gcc使用的是相同的T…

JavaScript服務器端開發技術(對象屬性的枚舉與查詢)

既然對象是屬性的集合&#xff0c;那么檢測與枚舉集合中的屬性就是一項重要任務。對此&#xff0c;我們來分別看一下ES3和ES5提供的解決方案。 1) ES3枚舉方案 示例代碼&#xff1a; var contacts{ ID:[0,1,2,3,4,5], names:["Zero","One","Two&q…

treelistview 所有節點失去焦點_垃圾詢盤過濾,焦點科技的 Milvus 實踐

文章作者&#xff1a;黎陽&#xff0c;焦點科技軟件開發工程師李成龍&#xff0c;Zilliz 數據工程師Milvus (https://milvus.io/) 向量搜索引擎開源半年以來&#xff0c;全球已經有數百家企業或組織用戶。焦點科技是一家以 B2B 外貿交易為主營業務的科技公司&#xff0c;也是 M…

《操作系統》OS學習(四):計算機體系結構、內存層次和地址生成

計算機除了計算能力之外還有存儲能力&#xff0c;存儲能力即計算機擁有一系列的存儲介質&#xff0c;我們可以在存儲介質上存儲我們的代碼和數據。計算機體系結構中約定了哪些地方可以用來存儲數據&#xff1a;CPU內的寄存器、內存和外存。不同的存儲介質&#xff0c;容量、速度…

GCC中SIMD指令的應用方法

X86架構上的多媒體應用開發&#xff0c;如果能夠使用SIMD指令進行優化&#xff0c; 性能將大大提高。目前&#xff0c;IA-32的SIMD指令包括MMX&#xff0c;SSE&#xff0c;SSE2等幾級。 在GCC的開發環境中&#xff0c;有幾種使用SIMD指令的方式&#xff0c;本文逐一介紹。X86的…

使用angular4和asp.net core 2 web api做個練習項目(二), 這部分都是angular

上一篇: http://www.cnblogs.com/cgzl/p/7755801.html 完成client.service.ts: import { Injectable } from angular/core; import { Http, Headers } from angular/http; import { Observable } from rxjs/Observable; import { ErrorHandler } from angular/core; import rxj…

leelen可視對講怎么接線_樓宇對講系統怎么布線 樓宇對講系統布線方式【介紹】...

隨著智能小區規模不斷增加&#xff0c;樓宇可視對講系統應用越來越廣泛&#xff0c;因而視頻信號的傳輸方式與布線設計顯得越來越重要。視頻信號與數據和音頻信號不同&#xff0c;可行的一種傳輸方式為視頻信號基帶傳輸&#xff0c;下面小編就簡要介紹一下這種傳輸方式和布線方…

路由匯總實例

5.2.2.2 路由匯總策略 之前提到過&#xff0c;在網絡管理員計劃好子網選擇并進行預期地路由匯總時&#xff0c;手動路由匯總工作能取得最佳效果。例如&#xff0c;之前的例子設定好了一個考慮周全的計劃&#xff0c;管理員只使用遠離Yosemite路由器并以10.2開頭的子網。這個規定…