一、本篇要學習的內容和知識結構概覽
二、知識點逐條分析
1. 混合型語言
? ? ? ?C++源文件的文件擴展名為.cpp, 也就是c plus plus的簡寫, 在該文件里有且只能有一個名為main的主函數, 它作為程序的入口.? 因為這個主函數的存在, 所以C++被稱為混合型語言.
2. C++語言當中的注釋
第一種: 單行注釋, 從 // 開始到本行結束.?
像這樣:?
? ? ? ?// 下面的代碼是求最大值的
第二程: 多行注釋, 從 /* 開始到 */ 結束.?
像這樣:
? ? ? ?/*
? ? ? ?函數功能: 下面的代碼是用來求最大值的
? ? ? ?函數描述: 接收兩個整型參數, 返回它倆的最大值
? ? ? ?*/
3. 輸入對象和輸出對象
? ? ? ?我們在使用這兩個對象前, #include <iostream> 先引入這個頭文件, 并且使用命名空間: using namespace std; 之后就可以使用這兩個對象啦!
a. 輸入對象: cin, 輸出對象cout.
像這樣:
int a = 0; // 定義一個整型變量a, 賦初值為0
cout << a; // 打印這個值
cin >> a; // 使用cin對象獲取用戶輸入的值賦值給a
cout << a; // 使用cout對象輸出變量a的值
b. 當然我們也可以輸出字符串:?
cout << “我是被輸出的字符串!”;
c. 我們還可以字符串加變量值的拼接輸出:
cout << “用戶輸入的值為: ” << a << endl;
d. 我們也可以在輸出的時候進行換行
第一種: cout << “\n”;
第二種: cout << endl;
這兩個的效果是一樣的.
4. 使用命名空間
? ? ? ?引入頭文件的方式有兩種, 系統頭文件用<>, 自定義頭文件用””
第一種: 帶.h引入頭文件
#include
第二種: 使用命名空間引入頭文件
#include <iostream>
using namespace std;
5. 對象的定義和初始化
? ? ? ?int a = 0;
? ? ? ?int z(0);
上面兩句話是等價的, 作用: 申請內存空間, 給內存空間命名, 向這塊內存中寫入數據.
不過我們一般都使用第一種方式.
6. 函數原型及其返回值
? ? ? ?函數及變量的使用規則: 先聲明, 后使用. 變量有時也可以邊聲明, 邊使用.
? ? ? ?我們在main函數后面定義的函數, 如果想要在main函數內使用, 就必須在main函數前聲明, 告訴編譯系統, 后面有這個函數, 我要用啦! 當然也可以把函數定義放在main函數之前, 這樣就不用聲明啦!
像這樣:?
#include <iostream>
using namespace std;
// 聲明函數
// 第一個int為返回值類型, 也稱之為函數類型, 第二, 第三個int為參數類型
int getMax(int, int);
int main(int argc, const char * argv[]) {
? ? // insert code here...
? ? int a = 5;
? ? int b = 8;
// 函數聲明之后, 才可使用
? ? int result = getMax(a, b);
? ? cout << result << endl;
? ? return 0;
}
// 定義函數
int getMax(int a, int b) {
? ? if (a > b) {
? ? ? ? return a;
? ? } else {
? ? ? ? return b;
? ? }
}
? ? ? ?如果函數不需要返回值, 可以用void標識, 一旦使用void, 函數體不再使用return語句, 但是可以使用return;直接結束函數的執行, 返回到調用函數.
像這樣:
void sayHello() {
? ? count << “I am a student!” << endl;
? ? return; // 后面的語句不再執行, 退出函數
? ? count << “I am 8 years old!” << endl;
}
7. const修飾符及預處理程序
a. const修飾的變量,?
? ? ? ?在以后值不可再更改, 所以我們稱之為符號常量, 也必須在聲明時對符號常量進行初始化.
像這樣:
? ? ? ?const int a = 5;
? ? ? ?a = 10; // 錯誤, 符號常量a不可更改
? ? ? ?但是用extern修飾的外部變量, 可以不用進行初始化.
像這樣:
? ? ? ?extern const int b; // 其中b為其它文件定義的外部符號常量
b. 用于代替宏定義
? ? ? ?#define M_PI 3.14? ?// 宏定義是直接進行替換, 沒有類型檢查
? ? ? ?const float M_PI 3.14;? ?// 而const定義的符號常量, 是有類型檢查的, 更安全.
c. 預處理有有一種: 宏定義, 條件編譯, 文件包含
? 第一種, 宏定義: 在編譯期間, 將出現宏的地方替換為指定代碼
? 第二種, 文件包含: 一個文件把另一個文件的內容包含進來.
像這樣:
? ? ? ?#include <iostream> using namespace std;
? 第三種, 條件編譯
像這樣:
? ? ? ?#ifndef _LIBCPP_HAS_NO_STDIN
? ? ? ?extern _LIBCPP_FUNC_VIS istream cin;
? ? ? ?extern _LIBCPP_FUNC_VIS wistream wcin;
? ? ? ?#endif
一般用于系統控制, 跟我們代碼中的if..else是一樣的, 用得比較少
8. 代碼書寫基本規范
? a. 括號緊跟在函數名后面, 我們見到名字加括號, 很直觀的知道這是一個函數
? b. for, while等關鍵詞和括號之間要用一個空格隔開
? c. 運算符左右各留一個空格
? d. 在參數列表中, 每個逗號后面加空格, 這樣顯得更清晰
? e. 合理添加空行和注釋, 讓代碼以組的形式和功能塊的形式呈現, 這樣就更完美啦!
? ? ? ?我們每每在接觸一門新的語言的時候, 關注點總是放在關鍵字, 語法結構, 函數(方法)使用上, 而我們學習一個新的語言要學會得應該是基本素養和基本概念, 以及語言當中所包含的自己所特有的思想。
? ? ? ?如果你也很想學編程,可以來我專欄的C語言/C++編程學習基地【點擊進入】!
? ? ? ?還有(源碼,零基礎教程,項目實戰教學視頻)!帶你入個門還是簡簡單單啦~
? ? ? ?涉及:游戲開發、課程設計、常用軟件開發、編程基礎知識、黑客等等...