C++學習筆記-2.C++的初步知識

來源:互聯網
上載者:User

標籤:

一、最簡單的C++程式

1.標準C++要求main函數必須聲明為int型,如果程式正常執行,則向作業系統返回數值0,否則返回數值-1

2.在C語言中所有的標頭檔都帶尾碼.h,而按C++標準要求,由系統提供的標頭檔不帶尾碼.h,由使用者自己編製的標頭檔可以有尾碼.h,在C++程式中也可以使用C語言編譯系統提供的帶尾碼.h的標頭檔

3.C++標準庫中的類和函數是在命名空間std中聲明的,因此程式中如果需要使用C++標準庫中的有關內容,就需要使用using namespace std;作聲明

二、C++對C的擴充

1.C++的輸入輸出

流名 含義 隱含裝置
cin 標準輸入 鍵盤
cout 標準輸出 螢幕
cerr 標準出錯輸出 螢幕
clog cerr的緩衝形式 螢幕

註:C語言要求變數的聲明部分必須在執行語句之前,而C++允許對變數的聲明放在程式的任何位置(但必須在使用該變數之前)

2.在C語言中常用#define指令來定義符號常量

   C++提供了用const定義常變數的方法,例:const float PI = 3.14

   區別:用const定義的常變數具有變數的屬性,有資料類型,佔用儲存單元,有地址

3.函數原型聲明:在C++中,如果函數調用的位置在函數定義之前,則要求在函數調用之前必須對所調用的函數作函數原型聲明

4.函數的重載:C++允許在同一範圍中用同一函數名定義多個函數,這些函數的參數個數和參數類型不相同,這些同名的函數用來實現不同的功能

   注意:不允許參數個數和類型都相同而只有傳回值類型不同

5.函數模板:適用於函數的參數個數相1同而類型不同,且函數體相同的情況

   格式:template <typename T> 或 template <class T>

   例:

template <typename T>T max(T a, T b, T c){    if(b > a)        a = b;    if(c > a)        a = c;    return a;}

6.有預設參數的函數

   例:float volume(float h, float r = 12.5);

         函數調用:volume(45.6); 或 volume(34.2, 10.4);

         註:(1)實參與形參的結合是從左至右順序進行的,因此指定預設值的參數必須放在形參表列中的最右端

               (2)若需要指定預設值,則應在調用函數之前指定,且為避免混淆,最好只在函式宣告時指定預設值

               (3)一個函數不能既作為重載函數,又作為有預設參數的函數

7.變數的引用

   格式:typename &refName = varName;

   說明:(1)對變數聲明一個引用,並不另開闢記憶體單元;在聲明一個引用時,必須同時使之初始化,即聲明它代表哪一個變數

            (2)在聲明一個變數的引用後,在本函數執行期間,該引用一直與其代表的變數相聯絡,不能再作為其他變數的別名,即 int &b = a1; int &b = a2; 是錯誤的

            (3)引用與其所代表的變數共用同一記憶體單元,系統並不為引用另外分配儲存空間,實際上,編譯系統使引用和其代表的變數具有相同的地址,即有 sizeof(a) = sizeof(b)

            (4)對引用的初始化,可以用一個變數名,也可以用另一個引用

   用途:(1)將引用作為函數參數:將變數名作為實參時傳給形參的是變數的值,在執行函數期間形參值發生變化並不傳回給實參

           例:

#include <iostream>using namespace std;void swap(int &a, int &b){    int temp;    temp = a;    a = b;    b = temp;}int main(){    int i = 3, j = 5;    swap(i, j);    cout << "i = " << i << " j = " << j << endl;    return 0;}

   注意:(1)不能建立void類型的引用

            (2)不能建立引用的數組,因為數組名只代表數組首元素的地址,本身不佔有儲存空間

            (3)可以將變數的引用的地址賦給一個指標,此時指標指向原來的變數

            (4)可以建立指標變數的引用

                 例:int i = 5; int *p = &i; int* &pt = p; cout << *pt; 此時輸出5

            (5)可以用const對引用加以限定,不允許改變該引用的值,但是它並不阻止改變引用所代表的變數的值

                這一特徵常用於作函數的形參,來保護形參的值不被改變

            (6)可以用常量或運算式對引用進行初始化,但此時必須用const作聲明

                此時編譯器處理方式:產生一個臨時變數,用來存放該運算式的值,引用是該變數別名

8.內建函數:在編譯時間將所調用的函數的代碼嵌入到主調函數中,又稱內嵌函式

                  一般對規模很小且使用頻繁的函數使用,以大大提高運行速度

   例:

inline int max(int a, int b, int c){    if(b > a)        a = b;    if(c > a)        a = c;    return a;}

9.範圍運算子:C++提供範圍運算子 :: ,它能指定所需要的範圍

   例:

#include "iostream"using namespace std;float a = 1;int main(int argc, char const *argv[]){    int a = 2;    cout << a << "\t" << ::a << endl;    return 0;}

   此時輸出: 2    1

10.字串變數

     C++標準庫中聲明了一個字串類,在使用string類功能時,必須在本檔案的開頭將C++標準庫中的string標頭檔包含進來,即 #include <string>

    (1)對字串變數的賦值:

         例:string str, tmp = “China”;

               str = “Canada”; 或 str = tmp;

         在定義字串變數不需指定長度,它的長度隨其中的字串長度而改變,且不儲存末尾的\0

    (2)字串變數的輸入輸出:cout << string1;    cin >> string2;

    (3)字串變數的運算:複製直接用等號,字串串連用加號,字串比較直接用關係運算子

         例:str = string1 + string2;

    (4)字串數組:並不要求每個字串元素具有相同的長度

11.動態分配/撤銷記憶體的運算子 new 和 delete

     注意:如果由於記憶體不足等原因而無法正常分配空間,new會返回一個null 指標NULL

              new 和 delete 是運算子,不是函數,new要和delete配合使用

C++學習筆記-2.C++的初步知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.