C/C++編程筆記:C++入門知識丨認識C++面向過程編程的特色

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

二. 知識點逐條分析

1. 使用函數重載算法

C++容許爲同一個函數定義幾個版本, 從而使一個函數名具備多種功能, 這稱之爲函數重載.編程

像這樣: 雖然函數名同樣, 可是參數列表不同, 一個求兩個整型參數的最大值, 一個求三個整型參數的最大值.數組

2. 新的基本數據類型及其注意事項安全

a. void是無類型標識符, 只能聲明函數的返回值類型, 不能聲明變量微信

b. C++當中有bool類型, 而C中沒有編輯器

c. C++的常量分爲符號常量, 浮點常量, 整數常量函數

   像這樣:工具

咱們能夠經過屏幕輸出來查看011, 11, 0x11各表明十進制的多少學習

3. 動態分配內存ui

申請內存空間: new 類型名[size], 申請能夠存size個該數據類型對象的存儲空間

釋放內存空間: delete 指針名;

像這樣:

4. 引用

爲現有對象起個別名, 別名表明的內存空間與引用對象的內存空間是同樣的

引用的聲明方式: 數據類型(類型名) & 別名 = 對象名;

&的位置可有可無

像這樣:

咱們再進一步的使用它

能夠看到, 上下兩組輸出結果是同樣的, 也就是說引用b, 和變量a都是表明的同一塊內存地址

因此更改b的值, a的值也會變

注意: 引用, 就是給一塊已經存在的內存添加一個新的標識符, 因此使用引用沒有分配新的內存空間, 因此能夠經過引用來修改原來的對象, 可是不能有空引用, 它必須和一聲正確的存儲區域關聯。

像這樣: 是錯誤的

int & b;// 編譯器提示信息: Declaration of reference variable 'b' requires an initializer, 變量b須要一個初始化器

引用的做用

a. 引用用於函數的參數表, 不產生臨時對象, 提升安全性和執行效率

b. 引用用於函數返回值 用到的時候不多, 由於不安全, 你可能問訪問到一個已經被釋放的對象

引用能夠這麼使用

可是不能這麼使用

指針和引用的區別和聯繫

聯繫: 它們都會對內存地址上存在的變量進行修改, 但引用不佔用新的地址, 節省開銷

區別: 指針是低級的直接操做內存地址的機制, 可由整型數強制類型轉換獲得, 功能強大, 可是容易出錯, 引用是較高級的封裝了指針的特性, 不直接操做內存地址, 不可強制類型轉換獲得, 安全性高.

5. 對指針使用const限定符

a. 指向常量的指針

int a = 5;

int b = 8;

const int * p = &a; // 指向常量的指針, 也就是"*p="不成立, 也就是不能經過指針p修改指向的內存地址中的值, 可是p的值能夠更改

*p = 10; // 錯誤

p = &b; // 正確

 

b. 常量指針

int a = 5;

int b = 8;

int * const p = &a; // 常量指針, 也就是"p="不成立, 也就是p的值不能更改, 可是是它所指向的內存地址中的值能夠修改

*p = 10; // 正確

p = &b; // 錯誤

 

c. 指向常量的常量指針

int a = 5;

int b = 8;

const int * const p = &a; // 指向常量的的常量指針, 既不能夠經過p修改它所指向的內存地址中的值, 也不可更改p的值

*p = 10; // 錯誤

p = &b; // 錯誤

 

6. 泛型算法應用於普通數組

// 定義數組
int a[] = {3, 2, 1, 5, 4};
int b[5] = {};

// 數組反轉
//    reverse(a, a + 5);

// 升冪排序
//    sort(a, a + 5);

// 降冪排序
//    sort (a, a+5, greater<int>());

// 複製數組內容
//    copy(a, a + 5, b);

// 逆向複製數組a中的內容到數組b
//    reverse_copy(a, a + 5, b);

// 檢索
//    int * p = find(a, a + 5, 5);
//    cout << p << endl;
//    cout << a + 5 << endl;
//    if (p == a + 5) {
//        cout << "沒有值爲5的數組元素" << endl;
//    } else {
//        cout << "有值爲5的數組元素" << endl;
//    }

// 正向輸出
copy(a, a + 5, ostream_iterator<int>(cout, "數字 "));

cout << endl;

// 逆向輸出
reverse_copy(a, a + 5, ostream_iterator<int>(cout, "數字 "));

for (int i = 0; i < 5; i++) {
    cout << a[i] << " ";
}

cout << endl;

for (int i = 0; i < 5; i++) {
    cout << b[i] << " ";
}

cout << endl;

 

7. 程序的編輯, 編譯, 鏈接, 運行的基本概念

使用編輯器編輯一個C++源程序, 也就是源文件,  擴展名爲.cpp, 像這樣: Hello.cpp;

使用C++編譯器對這個源程序進行編譯, 產生目標文件, 擴展名爲.obj, 像這樣: Hello.obj;

使用鏈接程序, 將目標文件與系統庫鏈接, 產生可執行文件, 擴展名爲.exe, 你這樣: Hello.exe

任什麼時候候咱們都不要忘記語言只是咱們解決問題的工具, 思想纔是咱們解決問題的本質, 技術不深, 咱們能夠去查, 去練習, 而思想只有慢慢的去陪養, 去思考, 去總結!


自學C/C++編程難度很大,不妨和一些志同道合的小夥伴一塊兒學習成長!

C語言C++編程學習交流圈子,【點擊進入微信公衆號:C語言編程學習基地

有一些源碼和資料分享,歡迎轉行也學習編程的夥伴,和你們一塊兒交流成長會比本身琢磨更快哦!

相關文章
相關標籤/搜索