C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)
先看以下代碼
#include <iostream>
#include <string>
using namespace std;int main() // main() 是程序開始執行的地方
{int num; // 聲明了一個名為 num 的變量,用于存儲類型為int 的數據。cout << "Enter your number" << endl;cin >> num; // 使用 cin 將輸入的數字存儲在該int 變量中cout << "Enter your name" << endl;string name;cin >> name;cout << "name is " << name << " number is " << num << endl;return 0;
}
分析下上面程序:
#include <iostream>定義頭文件,這些頭文件包含了程序中必需的或有用的信息;using namespace std告訴編譯器使用std命名空間;/* ......*/表示程序的多行注釋,編譯器會忽略這部分內容;//單行注釋,從//開始一直到行尾都表示為注釋,編譯器同樣會忽略該部分;int main()主函數,程序從這里開始執行;cout << "Enter your number"輸出引號內的內容;return 0終止main函數,并向調用進程返回值 0;
1. 預處理器編譯指令 #include
預處理器編譯指令是向預處理器發出的命令,總是以字符 # 打頭。在程序中第 1 行的
#include <filename>
讓預處理器獲取指定文件(這里是 iostream )的內容,并將它們放在在編譯指令所處的位置。 iostream 是一個標準頭文件,讓您能夠在第 11 行使用 cout 將 hello,world 顯示到屏幕上。換句話說,編譯器之所以能夠編譯包含 cout 的第 11 行,是因為第 1 行指示預處理器包含了 cout 的定義。
注意: #include <filename> 和 #include "filename" 的區別:
#include <filename>通常用于包含標準庫頭文件;#include "filename"通常用于包含自己創建的頭文件;
2. 程序主體
聲明 main() 時,總是在它前面加上 int ,這是一種標準化約定,表示 main() 函數的返回類型為整數。
int main()
{dosomethingreturn 0
}
在很多 C++ 應用程序中,都使用了類似于下面的 main() 函數變種:
int main (int argc, char* argv[])
這符合標準且可以接受,因為其返回類型為 int 。括號內的內容是提供給程序的參數。該程序可能允許用戶執行時提供命令行參數,如:
program.exe arguments
其中 arguments 是操作系統傳遞給程序的參數,以便在 main() 中進行處理。
程序第 11 行:
cout << "hello,world" << endl;
cout 是將 hello,world 顯示到控制臺(即屏幕)的語句。
cout是在名稱空間std中定義的一個流,這里使用流插入運算符<<將文本 hello,world 放到這個流;endl用于換行,將其插入流中相當于插入回車。每次需要將新實體插入流中時,都使用了流插入運算符<<;
C++ 流的優點是,將類似的語義用于另一種類型的流時,將執行不同的操作。例如,要插入到文件而不是控制臺,可將插入運算符 << 用于 std::fstream (而不是 std::cout )。
2.1 為什么 main 函數前要加上 int ?
main 函數的返回值是返回給主調進程,使主調進程得知被調用程序的運行結果。
標準規范中規定 main 函數的返回值為 int ,一般約定:
- 程序運行成功時返回 0;
- 出現錯誤時返回 -1;
然而,返回值為整數,程序員可利用整個整數范圍,指出眾多不同的成功或失敗狀態。
如果程序的運行結果不需要返回給主調進程,或程序開發人員確認該狀態并不重要,可以不寫 main 函數的返回值。
- 在一些檢查不是很嚴格的編譯器中,比如 VC, VS 等,
void類型的main是允許的; - 不過在一些檢查嚴格的編譯器下,比如
g++, 則要求main函數的返回值必須為int型;
所以在編程時,區分程序運行結果并以 int 型返回,是一個良好的編程習慣。
#include <iostream>
using namespace std;
void main()
{cout << "hello,world" << endl;
}
使用 g++ 編譯之后報錯:
wohu@wohu:~/C++$ g++ main.cpp
main.cpp:3:11: error: ‘::main’ must return ‘int’void main() ^
wohu@wohu:~/C++$
2.2 int main() 與 int main(void) 區別
int main(void) 指的是此函數的參數為空,不能傳入參數,如果傳入參數,就會報錯。
在 C++ 中 int main() 和 int main(void) 是等效的,但在 C 中讓括號空著代表編譯器對是否接受參數保持沉默。
2.3 函數聲明及調用
#include <iostream>
using namespace std;// 函數聲明,它告訴編譯器您要創建一個函數,該函數名為demo(),返回類型為int。
int demo();int main()
{demo();return 0;
}int demo()
{cout << "this is demo function" << endl;cout << "10/5=" << 10/5 << endl;cout << "22/7=" << 22/7 << endl;cout << "22/7.0=" << 22/7.0 << endl;return 0;
}
如果第 5 行被注釋掉,
// int demo();
那么會編譯報錯:
error: ‘demo’ was not declared in this scope
但是如果 demo 函數在 main 函數前定義,則不會報錯,如下所示:
#include <iostream>
using namespace std;// demo() 在 main 函數之前定義,較新的C++編譯器將其視為函數聲明和定義
int demo()
{cout << "this is demo function" << endl;cout << "10/5=" << 10/5 << endl;cout << "22/7=" << 22/7 << endl;cout << "22/7.0=" << 22/7.0 << endl;return 0;
}int main()
{demo();return 0;
}
2.4 函數返回值
在 C++ 中,函數無需做任何決策,也無需返回成功/失敗狀態時,可將其返回類型聲明為 void 。
void demo()
除非明確聲明了不返回值,否則函數必須返回一個值。
main() 也是函數,且總是返回一個整數。在很多情況下,一個應用程序被另一個應用程序啟動,而父應用程序(啟動者)想知道子應用程序(被啟動者)是否成功地完成了其任務。程序員可使用 main() 的返回值向父應用程序傳遞成功或錯誤狀態。
3. 標識符規則
C++ 標識符是用來標識變量、函數、類、模塊,或任何其他用戶自定義項目的名稱。一個標識符以字母 A-Z 或 a-z 或下劃線 _ 開始,后跟零個或多個字母、下劃線和數字(0-9)。
C++ 標識符內不允許出現標點字符,比如 @ 、 & 和 % 。 C++ 是區分大小寫的編程語言。
標識符特點如下:
- 第一個字符必須是字母或下劃線;
- 后續字符可以是字母、數字或下劃線;
- 標識符的有效長度不超過 247 字符;
- 標識符不能和關鍵字相同;
- 標識符區分大小寫;
- 最好也不要和系統預定義標識符同名;
- 標識符命名要做到“見名知義”;
- 應該避免使用可能引起混淆的字母;
4. 注釋說明
C++ 支持單行注釋和多行注釋。注釋中的所有字符會被 C++ 編譯器忽略。C++ 注釋以 /* 開始,以 */ 終止。注釋也能以 // 開始,直到行末為止。
在 /* 和 */ 注釋內部, // 字符沒有特殊的含義。在 // 注釋內, /* 和 */ 字符也沒有特殊的含義。
在 C++ 語言中,如果試圖在一段代碼的首尾分別加上 / * 和 * / 符號來 “ 注釋掉 ” 這段代碼,你不一定能如愿 。 如果這段代碼內部原先就有注釋存在,這樣做就會出問題 。 要從邏輯上刪除一段 代碼,更好的辦法是使用 #if 指令 。 只要像下面這樣使用:
#if 0statements
#endif
在 #if 和 #endif 之間的程序段就可以有效地從程序中去除,即使這段代碼之間原先存在注釋也無妨,所以這是一種更為安全的方法 。
5. 注意事項
C++中每個語句必須以分號;結束,它表明一個邏輯實體的結束;- 保存文件時,務必使用擴展名
.cpp,不要使用擴展名.c,因為有些編譯器都將這種文件視為C語言代碼,而不是C++代碼; - 在
C++中分行并不能自動結束語句。在C++中,一條語句可跨越多行;還可在一行中包含多條語句,只要每條語句都以;結尾;
總結
以上是生活随笔為你收集整理的C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开一家儿童主题餐厅大概需要多少资金?
- 下一篇: 喜大普奔下一句是什么啊?