C++學習筆記--黑馬程序員

                        學習目標:

                        • 掌握 C++入門知識
                        • 掌握 STL
                        • 洛谷算法訓練題

                        學習內容:

                        C++入門知識

                        一、基本介紹:C++不同于C語言,這是一門面向對象的高級程序設計語言。
                        二、面向對象與面向過程:什么是面向對象?對象又是什么? 對象是對客觀事物的抽象,也就是說,任何事物都可以看做對象。說到面向對象,就不得不提面向過程了。我們可以舉個例子來理解他們:
                        例如:我們要去自動售貨機買飲料,如果面向過程:我們需要走到售貨機前,投擲硬幣,拿到飲料,它所針對的是我買飲料的這個過程。而面向對象則是:自動售貨機有哪些功能,收錢、找錢、送出飲料,它面向的是整個過程。
                        三、C++基本結構
                        眾所周知,每一門語言都有自己的基本結構,下面讓我來介紹一下C++的基本結構吧!

                        #include <iostream>
                        using namespace std;
                         
                        // main() 是程序開始執行的地方
                         
                        int main()
                        {
                           cout << "Hello World"; // 輸出 Hello World
                           return 0;
                        }
                        
                        • C++ 語言定義了一些頭文件,這些頭文件包含了程序中必需的或有用的信息。上面這段程序中,包含了頭文件 。
                        • 下一行 using namespace std; 告訴編譯器使用 std 命名空間。命名空間是 C++ 中一個相對新的概念
                        • 下一行 // main() 是程序開始執行的地方 是一個單行注釋。單行注釋以 // 開頭,在行末結束。
                        • 下一行 int main() 是主函數,程序從這里開始執行。
                        • 下一行 cout << “Hello World”; 會在屏幕上顯示消息 “Hello World”。
                        • 下一行 return 0; 終止 main( )函數,并向調用進程返回值 0。

                        四、變量
                        1、什么是變量:變量名稱本身就是一個指針指向你一個空間用來存儲你的數據,其作用就是給一段指定的內存起名,方便我們操作這段內存。
                        2、變量創建語法:數據類型 變量名 = 變量初始值
                        3、示例

                        #include <iostream>
                        using namespace std;
                        int main() {
                            int a=10;
                            cout<< a<<endl;
                            return 0;
                        }
                        

                        規定所有用到的變量要先定義后使用,編譯器處理起來比較方便,不會有歧義。因為 C++ 里面,相同名字的變量在不同的作用域里面,是可以重復聲明的,而一個{}就是一個作用域。
                        五、常量
                        1、作用:用于記錄程序中不可更改的數據
                        2、定義方式:
                        <1> #define 宏常量 #define 常量名 常量值 通常在文件上方定義
                        <2> const修飾的變量 const 數據類型 常量名 = 常量值
                        3、示例

                        #include <iostream>
                        #define day 7
                        using namespace  std;
                        int main() {
                           const int time=24;
                        cout<<"一周有"<<day<<"天"<<endl;
                        cout<<"一天有"<<time<<"小時"<<endl;
                        }
                        

                        五、關鍵字
                        作用:關鍵字是C++中預先保留的單詞,也稱標識符。

                        • 在定義變量或者常量時,不得使用關鍵字,否則會產生歧義
                          在這里插入圖片描述
                          六、標識符命名規則
                          作用:C++規定標識符(變量、常量)命名時,有一套自己的規則
                        • 標識符不能是關鍵字
                        • 標識符只能由字母、數字以及下劃線組成
                        • 第一個字符必須是字母或下劃線
                        • 標識符中的字母區分大小寫
                          給標識符命名時,一定要做到見明知意
                          七、數據類型
                          存在意義:給變量分配合適的內存空間。
                          在這里插入圖片描述

                        1、整型
                        在這里插入圖片描述
                        2、sizeof關鍵字
                        <1>作用:利用sizeof關鍵字可以統計數據類型所占內存大小
                        <2>語法:sizeof( 數據類型 / 變量 )
                        <3>

                        #include <iostream>
                        using namespace std;
                        int main(){
                        
                            cout <<"short類型所占空間"<<sizeof(short)<<endl;
                            cout <<"int類型所占空間"<<sizeof(int)<<endl;
                            cout <<"long類型所占空間"<<sizeof(long)<<endl;
                            cout <<"long long類型所占空間"<<sizeof(long long)<<endl;
                            cout <<"float類型所占空間"<<sizeof(float)<<endl;
                            cout <<"double類型所占空間"<<sizeof(double)<<endl;
                            cout <<"long double類型所占空間"<<sizeof(long double)<<endl;
                            cout <<"char類型所占空間"<<sizeof(char)<<endl;
                            cout <<"unsigned char類型所占空間"<<sizeof(unsigned char)<<endl;
                            cout <<"unsigned short類型所占空間"<<sizeof(unsigned short)<<endl;
                            cout <<"unsigned int類型所占空間"<<sizeof(unsigned int)<<endl;
                            cout <<"unsigned long類型所占空間"<<sizeof(unsigned long)<<endl;
                            cout <<"unsigned long long類型所占空間"<<sizeof(unsigned long long)<<endl;
                            cout <<"bool類型所占空間"<<sizeof(bool)<<endl;
                        
                        
                        }
                        

                        3、浮點型
                        <1>作用:用于表示小數
                        <2>分類:浮點型變量分為兩種:單精度(float)和雙精度(double)

                        數據類型占用空間有效數字范圍
                        float4字節7位有效數字
                        double8字節15~16位有效數字

                        <3>示例

                        #include<iostream>
                        using namespace std;
                        int main(){
                            float f1=3.14f;//不加f系統會認為是double類型的
                            cout<<"f1="<<f1<<endl;
                            double dl=3.14;
                            cout<<"dl="<<dl<<endl;
                        }
                        

                        4、字符型
                        <1>作用:字符型變量用于顯示單個字符
                        <2>語法:char ch='a'

                        注意:在顯示字符型變量時,用單引號將字符括起來

                        • c/c++中字符型變量只占用一個字節
                        • 字符型變量并不是把字符本身到內存中存儲,而是將對應的ASCII編碼放入存儲單元

                        <3>示例

                        #include<iostream>
                        using namespace std;
                        int main(){
                            char ch='a';
                            cout <<ch<<endl;
                            cout<<sizeof(char)<<endl;
                            cout<<(int)ch<<endl;
                        }
                        

                        5、字符串型
                        <1>作用:用于表示一串字符
                        <2>語法:string 變量名 =“字符串值”
                        <3>示例:

                        #include <iostream>
                        #include <string>
                        using namespace std;
                        int main(){
                            string str="adfg";
                            cout<<str<<endl;
                        }
                        

                        6、布爾類型
                        <1>作用:布爾數據類型代表真或假的值
                        bool類型只有兩個值:

                        • true --真(本質是1)
                        • false–假(本質是0)

                        bool類型只占一個字節
                        <2>示例:

                        #include<iostream>
                        using namespace std;
                        int main(){
                            bool flag=true;
                            cout<<flag<<endl;
                            cout<<sizeof(flag)<<endl;
                        }
                        

                        八、運算符
                        1、算術運算符
                        <1>作用:用于處理四則運算
                        <2>分類
                        在這里插入圖片描述

                        #include<iostream>
                        using namespace std;
                        int main(){
                            int a1=10;
                            int b1=3;
                            double d1=3.14;
                            double d2=3.1;
                            cout<<a1+b1<<endl;
                            cout<<a1-b1<<endl;
                            cout<<a1*b1<<endl;
                            cout<<a1/b1<<endl;
                            cout<<a1%b1<<endl;
                            //cout<<d1%d2<<endl;  //必須有整數
                        }
                        

                        2、邏輯運算符
                        <1>作用:進行邏輯運算
                        在這里插入圖片描述
                        <2>示例:

                        #include <iostream>
                        using namespace std;
                         
                        int main()
                        {
                           int a = 5;
                           int b = 20;
                           int c ;
                         
                           if ( a && b )
                           {
                              cout << "Line 1 - 條件為真"<< endl ;
                           }
                           if ( a || b )
                           {
                              cout << "Line 2 - 條件為真"<< endl ;
                           }
                           /* 改變 a 和 b 的值 */
                           a = 0;
                           b = 10;
                           if ( a && b )
                           {
                              cout << "Line 3 - 條件為真"<< endl ;
                           }
                           else
                           {
                              cout << "Line 4 - 條件不為真"<< endl ;
                           }
                           if ( !(a && b) )
                           {
                              cout << "Line 5 - 條件為真"<< endl ;
                           }
                           return 0;
                        }
                        

                        九、程序流程結構
                        C/C++支持最基本的三種程序運行結構:順序結構、選擇結構、循環結構

                        • 順序結構:程序按順序執行,不發生跳轉
                        • 選擇結構:依賴條件是否滿足,有選擇的執行相應功能
                        • 循環結構:依據條件是否滿足,循環多次執行某段代碼

                        順序結構比較簡單,在此就不多做贅述
                        1、選擇結構
                        <1>作用:執行滿足條件的語句
                        <2>格式:

                        • 單行格式if語句
                        • 多行格式if語句
                        • 多條件if語句
                          <4>練習題:
                          這里推薦大家去練習洛谷的算法題,題目如下:
                          輸入一個年份(大于 1582 的整數 ),判斷這一年是否是閏年,如果是輸出 1,否則輸出 0。
                          解答:
                        #include <iostream>
                        using namespace std;
                        int main() {
                        int year;
                        cin>>year;
                            if ((year%4==0&&year%100!=0)||year%400==0){
                                cout<<"1";
                            }
                            else cout<<"0";
                        }
                        
                        

                        2、循環結構
                        <1>作用:滿足循環條件,執行循環語句
                        <2>分類:
                        ①while語句:while(循環條件){循環語句}

                        #include <iostream>
                        using namespace std;
                        int main() {
                            int n;
                            cin>>n;
                        while(n--){
                            cout<<n<<endl;
                        }
                        
                        }
                        

                        ②for語句:for(起始表達式;條件表達式;末尾循環體){循環語句;}

                        #include <iostream>
                        using namespace std;
                        int main() {
                            int n;
                            cin>>n;
                            for (int i = 0; i < n; i++) {
                                cout<<i<<endl;
                            }
                        
                        }
                        
                        

                        <3>解釋:只要循環條件位置,就執行循環語句。
                        <4>兩大語句break、continue
                        break
                        ①作用:終止循環
                        ②使用時機:

                        • 出現在switch語句中,作用是終止case并跳出switch
                        • 出現在循環語句中,作用是跳出當前循環
                        • 出現在嵌套循環語句中,跳出最近內層循環語句

                        continue
                        ①作用:在循環語句中,跳過本次循環中余下的語句,繼續執行下一次循環
                        ②示例:

                        #include <iostream>
                        using namespace std;
                        int main() {
                            int n;
                            cin>>n;
                            for (int i = 0; i < n; ++i){
                                if(i%2==0){
                                    continue;
                                }
                                cout<<i<<endl;
                            }
                        }
                        

                        十、數組
                        1、概述:所謂數組,就是一個集合,里面存放了相同類型的數據元素
                        2、特點:<1>數組中每個數據元素都是相同的數據類型;<2>數組是由連續內存位置組成的
                        3、語法:數據類型 數組名[]={值1,值2};
                        4、數組名
                        <1>用途:①可以統計整個數組在內存中的長度②可以獲取數組在內存中的首地址
                        <2>示例

                        #include <iostream>
                        using namespace std;
                        int main(){
                            int arr[10]={1,2,3,4,5,6,7,8,9,10};
                            cout<<sizeof(arr)<<endl;//整個數組所占內存空間
                            cout<< sizeof(arr[0])<<endl;//每個元素所占內存空間
                            cout<<sizeof(arr)/sizeof(arr[0])<<endl;//數組長度
                            cout<<(long long)arr<<endl;//數組的首地址
                        
                        }
                        

                        十一、函數
                        1、作用:
                        <1>將一段經常使用的代碼封裝起來,減少重復代碼
                        <2>將較大的程序分割成幾個較小的代碼塊,每個代碼塊實現特定的功能
                        2、函數的定義
                        函數的定義一般主要有以下5個步驟:
                        <1>返回值類型
                        <2>函數名
                        <3>參數表列
                        <4>函數體語句
                        <5>return語句
                        3、函數的調用
                        <1>語法:函數名(參數)
                        <2>值傳遞:
                        函數調用時實參將值傳入給形參
                        重點來啦!
                        數組在傳參會退化成指針
                        為什么會退化:C語言只會以值拷貝的方式傳遞參數,參數傳遞時,如果只拷貝整個數組,效率會大大降低,并且在參數位于棧上,太大的數組拷貝將會導致棧溢出。

                        示例:

                        #include <iostream>
                        using namespace std;
                        void test(int *a){}//此處傳參傳的是數組首地址
                        void test2(int a[]){}//用數組的形式傳遞參數,不需要指定參數的大小,因為在一維數組傳參時,形參不會真實的創建數組,傳的只是數組首元素的地址。(如果是變量的值傳遞,那么形參就是實參的一份拷貝)
                        void test3(int b[][3]){}//二維數組與此不同,必須要傳列數
                        int main(){
                            int a[3]={1,2,3};
                            int b[][3]={1,2,3};
                            test(a);
                            test2(a);
                        }
                        
                        評論 8 您還未登錄,請先 登錄 后發表或查看評論

                        “相關推薦”對你有幫助么?

                        • 非常沒幫助
                        • 沒幫助
                        • 一般
                        • 有幫助
                        • 非常有幫助
                        提交
                        ??2022 CSDN 皮膚主題:數字20 設計師:CSDN官方博客 返回首頁

                        打賞作者

                        君陌上

                        你的鼓勵將是我創作的最大動力

                        ¥2 ¥4 ¥6 ¥10 ¥20
                        輸入1-500的整數
                        余額支付 (余額:-- )
                        掃碼支付
                        掃碼支付:¥2
                        獲取中
                        掃碼支付

                        您的余額不足,請更換掃碼支付或充值

                        打賞作者

                        實付
                        使用余額支付
                        點擊重新獲取
                        掃碼支付
                        錢包余額 0

                        抵扣說明:

                        1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
                        2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

                        余額充值
                        久久悠悠精品综合网