1. 程式人生 > >C++複習筆記——0_零碎問題及解決筆記

C++複習筆記——0_零碎問題及解決筆記

文章目錄

1. 怎麼理解int main(int argc, const char *argv[])?

https://blog.csdn.net/yang_chengfeng/article/details/49406443https://blog.csdn.net/yang_chengfeng/article/details/49406443

2. \nendl 的區別是什麼?

\n表示內容為一個回車符的字串。std::endl是流操作子,輸出的作用和輸出 \n 類似,但可能略有區別。
std::endl

輸出一個換行符,並立即重新整理緩衝區。
例如:

std::cout << std::endl;

相當於:

std::cout << '\n' << std::flush;
// 或者
std::cout << '\n'; std::fflush(stdout);

對於有輸出緩衝的流(例如coutclog),如果不手動進行緩衝區重新整理操作,將在緩衝區滿後自動重新整理輸出。不過對於 cout 來說(相對於檔案輸出流等),緩衝一般體現得並不明顯。但是必要情況下使用 endl 代替 \n 一般是個好習慣。

對於無緩衝的流(例如標準錯誤輸出流cerr

),重新整理是不必要的,可以直接使用 \n

3. .cpp 以及 .h 檔案的作用?

.h 中存放類的宣告,函式原型(放在類的宣告中)。
.cpp 存放函式體。
也就是說,一個存放宣告(declaration),一個存放定義(definition)。
如果我們在一個頭檔案裡聲明瞭一個函式,當我們需要定義這個函式(這個定義是唯一的,也就是隻能定義一次),或者需要使用這個函式時,我們在 .cpp 中需要 include 這個標頭檔案。
同樣地,如果我們在一個頭檔案裡聲明瞭一個類,當我們需要定義類裡的成員函式,或者我們需要使用這個類時,我們在 .cpp 中需要 include 這個標頭檔案。
對於類的設計者來說,標頭檔案就像他們和類的使用者的一個合同,編譯器會強化這一合同,它會要求你在使用這些類裡的函式或結構時必須要宣告。

4. include 中的<>以及" " 區別?

<> 先去系統目錄中找標頭檔案,如果沒有在到當前目錄下找。所以像標準的標頭檔案 stdio.hstdlib.h 等用這個方法。
" " 首先在當前目錄下尋找,如果找不到,再到系統目錄中尋找。 這個用於 include 自定義的標頭檔案,讓系統優先使用當前目錄中定義的。

5. "\n" 以及 '\n'區別?

"\n" 表示一個字串,只有一個數據是回車符。
'\n' 表示一個字元。
這兩個在輸出上是一樣的。

6. 是否使用using namespace std;?

真正的開發過程中, 儘量避免使用 using namespace std;等直接引入整個名稱空間,否則會因為名稱空間汙染導致很多不必要的問題, 比如自己寫的某個函式,名稱正好和 std 中的一樣, 編譯器會不知道使用哪一個, 引起編譯報錯, 建議使用:

std::cout << "Hello World" << std::endl;

等直接由名稱空間組合起來的全稱。

7. C++如何輸入包含空格的字串?

對於C++字串的輸入我們看一下下面這段程式碼:

string s;      //定義空字串
cin >> s;    //輸入字串
cout << s;   //列印

但我們會發現如果我們輸入了還有空格的字串,s裡讀入的字串遇到空格回車tab都會結束,比如我們輸入123 888,但實際輸入到s裡的只是123。可以使用getline(cin, s)或者字串拼接函式當然也可以使用字串拼接函式。
如下:

string inputStr;
getline(cin, inputStr);
cout << inputStr;

8. C++中引用(&)的用法和應用例項

https://blog.csdn.net/love_gaohz/article/details/7517891

9. 在 C++ 中 main 函式前面為什麼要加上資料型別,比如: int void ?

main 函式的返回值是返回給主調程序,使主調程序得知被呼叫程式的執行結果。

標準規範中規定 main 函式的返回值為 int,一般約定返回 0 值時代表程式執行無錯誤,其它值均為錯誤號,但該約定並非強制。

如果程式的執行結果不需要返回給主調程序,或程式開發人員確認該狀態並不重要,比如所有出錯資訊均在程式中有明確提示的情況下,可以不寫 main 函式的返回值。在一些檢查不是很嚴格的編譯器中,比如 VC, VS 等,void 型別的 main 是允許的。不過在一些檢查嚴格的編譯器下,比如 g++, 則要求 main 函式的返回值必須為int 型。
所以在程式設計時,區分程式執行結果並以 int 型返回,是一個良好的程式設計習慣。

10. C 語言 int main() 和 int main(void) 的區別?

int main(void)指的是此函式的引數為空,不能傳入引數,如果你傳入引數,就會出錯。

int main()表示可以傳入引數。

// 這樣是正確的
int main()
{
  if (0) main(42);
}

// 這樣會出錯
int main(void)
{
  if (0) main(42);
}

在 C++ 中int main()int main(void) 是等效的,但在 C 中讓括號空著代表編譯器對是否接受引數保持沉默。在 C 語言中main()省略返回型別也就相當說明返回型別為 int 型,不過這種用法在 C++ 中逐漸被淘汰。雖然 void main()在很多系統都適用,但他畢竟不是標準的,所以應該避免這種用法, 應該使用這種int main(void) 的寫法比較妥當。