歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言函數與函數調用學習

C語言函數與函數調用學習

日期:2017/3/1 9:49:28   编辑:Linux編程

函數(function)表示每個輸入值對應唯一輸出值的一種對應關系。
所以一個完整的函數由函數名、函數體、輸入輸出參數以及返回值等幾部分組成。
下面就是一個類似於strcpy函數的實現案例,
char* strcpy(char* dest, const char* src)
{
char * temp = dest;
while(*temp != '\0')
{
*temp = *src;
temp++;
}

return dest;
}

如果是調用庫函數或者別的模塊提供的接口函數,那麼在調用之前就必須先弄清楚:
1. 函數可以實現的功能;
2. 函數的返回值代表的含義;
3. 函數的參數是輸入參數還是輸出參數,參數應該如何傳。
這就必須要閱讀接口相應的文檔資料;
如果以上幾點都沒有完全搞清楚就去調用接口函數,那出錯也就不足為奇了。

如果是提供接口函數給其他模塊使用,則必須要:
1. 函數名稱應該很直觀的表現函數的功能;
2. 函數功能應該要越簡單越好,一個函數只做一件事;
3. 必須提供對函數名、函數功能、函數輸入輸出參數以及返回值的說明。

同步函數,就是當函數執行正常返回時,函數所要做的事情都已經做完了。
異步函數,函數會立即返回,但是函數所要做的事情還沒有完成。

單線程環境下,程序總是會被順序的執行(去掉中斷的情況),總是一個函數調用另一個函數。
必須要等到被調用函數執行完,程序才能繼續往下執行。
所以單線程環境不存在異步函數或異步調用的概念。

為什麼要使用異步函數?
這是因為如果函數執行需要較長的時間,此時再調用同步函數,線程就會被卡住直接函數執行完成。
異步函數調用如何保證同步呢?
最簡單的方法就是通過callback機制,在調用異步函數時傳入一個函數指針;
異步函數的內部保存該函數指針,在函數真正執行完成時通過該函數指針通知調用方。

同步調用直觀簡單易於理解;
異步調用需要更加注意多線程間的消息同步以及程序設計方法。
總之要根據具體軟件設計的需要來決定。

Copyright © Linux教程網 All Rights Reserved