一点记录
1、兩數交換 #include <iostream.h> void main()
{
?int a = 10;
?int b = 20;
?a = a^b;
?b = a^b;
?a = a^b;
?cout<<a<<endl;
?cout<<b<<endl;
} 2、C++編譯時定義了_cplusplus;C編譯時定義了_STDC_.可以用#ifdef 來判別是C編譯還是C++編譯。 3. 運算符是內置于語言的,函數是所帶的庫里面的。當然是前者的效率要高一些,不存在函數調用。 4、strcpy()容易產生緩存區溢出,可以用memcpy()函數來代替,因為memcpy()函數第三個參數傳進拷貝的字節個數,所以不會像strcpy()函數一樣因為找不到'\0'而產生緩沖區溢出現象。 5、_exit()與exit()函數的區別 _exit直接強制的停止進程,exit會作清理工作,比如說,釋放內存(在C++里面會主動的調用析構函數,),關閉文件句柄的工作,包括刷新IO流 調用exit(),子進程會關閉所有打開的進程描述符。當執行流回到父進程的時候,所有文件(父子進程共享哦)都已經被關掉了,所以就沒有輸出咯。
而調用_exit(),它沒有exit()這么勤快,只是退出而已,不會關文件,所以就ok咯。
{
?int a = 10;
?int b = 20;
?a = a^b;
?b = a^b;
?a = a^b;
?cout<<a<<endl;
?cout<<b<<endl;
} 2、C++編譯時定義了_cplusplus;C編譯時定義了_STDC_.可以用#ifdef 來判別是C編譯還是C++編譯。 3. 運算符是內置于語言的,函數是所帶的庫里面的。當然是前者的效率要高一些,不存在函數調用。 4、strcpy()容易產生緩存區溢出,可以用memcpy()函數來代替,因為memcpy()函數第三個參數傳進拷貝的字節個數,所以不會像strcpy()函數一樣因為找不到'\0'而產生緩沖區溢出現象。 5、_exit()與exit()函數的區別 _exit直接強制的停止進程,exit會作清理工作,比如說,釋放內存(在C++里面會主動的調用析構函數,),關閉文件句柄的工作,包括刷新IO流 調用exit(),子進程會關閉所有打開的進程描述符。當執行流回到父進程的時候,所有文件(父子進程共享哦)都已經被關掉了,所以就沒有輸出咯。
而調用_exit(),它沒有exit()這么勤快,只是退出而已,不會關文件,所以就ok咯。
轉載于:https://blog.51cto.com/didiw8899/103709
總結
- 上一篇: C# 基础知识
- 下一篇: 模型-视图-提供器 模式