<<從0到1學C++>> 第1篇 認識C++的函式和物件

光明磊落發表於2019-01-02

一. 本篇要學習的內容和知識結構概覽

<<從0到1學C++>> 第1篇 認識C++的函式和物件

二. 知識點逐條分析

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 <iostream.h>

第二種: 使用名稱空間引入標頭檔案

#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. 合理新增空行和註釋, 讓程式碼以組的形式和功能塊的形式呈現, 這樣就更完美啦!

我們每每在接觸一門新的語言的時候, 關注點總是放在關鍵字, 語法結構, 函式(方法)使用上, 而我們學習一個新的語言要學會得應該是基本素養和基本概念, 以及語言當中所包含的自己所特有的思想. 學會對比, 學會思考這門語言的優勢和不足, 相信大家一定會有所收穫, 而我也在向這方面所努力, 希望大家一塊來討論這門語言和或者其它的語言, 懂得分享才能更進一步!

本系列文章會持續更新! 大家踴躍的留下自己的腳印吧!

????????


相關文章