printf函数与主函数问题
1、printf 函數輸出問題
printf 函數并不會直接將數據輸出到屏幕,而是先放到緩沖區中,只有一下三種情況滿足,才會輸出到屏幕。
1) 緩沖區滿
2) 強制刷新緩沖區 fflush(緩沖區遇到\n會自動刷新)
3) 程序結束時
運行printf可執行程序時,我們發現,它會“先執行”sleep(2)再打印hello。注意先執行我們打了雙引號的,其實并不是先執行了sleep(2)。程序執行printf時將需要輸出的字符放到了緩沖區中了,此時由于緩沖區沒有滿,也沒有刷新緩沖區,程序也沒有結束,所以才沒有把緩沖區中的字符輸出到屏幕上,執行完sleep時,由于程序要結束了,所以此時緩沖區自動刷新,將字符打到了屏幕上。
當我們在執行printf后刷新緩沖區的話,就會先把字符打印出來,再sleep(2),如下:
也可以在需要printf的語句后面加上\n,會自動刷新緩沖區。
在這里要說一下,exit(0)會先刷新緩沖區,再結束函數。而_exit(0)會直接結束函數,不會刷新緩沖區。
如下圖所示:
會看見一個現象,程序休眠兩秒后直接退出,沒有打印字符。這也是exit與_exit的區別。
2、主函數參數介紹
int main( int argc, char* argv[], char* envp[])
(1) argc 參數個數
(2) argv 參數內容
(3) envp 環境變量
如下圖對參數個數和參數內容的展示:
如下圖打印環境變量
環境變量只是打印看一下 ,對我們(最起碼是對我來說)現階段學習關系不大。
總結
以上是生活随笔為你收集整理的printf函数与主函数问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux系统上的库文件的生成与使用
- 下一篇: fork复制进程