C++day03 學習筆記

來源:互聯網
上載者:User

1、cin 輸入資料流一旦破壞,就不能恢複

2、函數:一段相關程式碼群組成的集合,以便完成一個特定的目的。
   (1)可以通過名字來使用,曾強了代碼的可重用性。
   (2)提高可維護性。

3、函數定義=聲明+函數體:
    <傳回型別> 函數名(<參數表>...){
           return ...
    }
    函數傳回值:只有在調用函數的同時才能儲存傳回值
    函數定義時,小括弧裡的參數稱為形參,在函數被調用的時候才有意義。
    函數調用時,小括弧裡的被傳入的參數稱為實參。

4、函數在調用之前只有聲明就可以,因為在編譯階段,參照聲明可以完成文法上的檢測。
    函式宣告     <傳回型別> 函數名(<參數表>...);
    聲明與定義的分離,實現並行開發!

5、全域變數,局部變數
   局部變數:函數內部聲明的變數,只能在它聲明的函數內部使用。如果沒有對其初始化就使用,則其值為垃圾數字。
   全域變數:能被所有的函數共同使用,要聲明在所有函數(包括main函數)之外。盡量少使用,影響太大。如果沒有對其初始化就使用,系統預設為其初始化為0。

6、資料區:只存放全域資料,資料區的資料是穩定的,程式啟動時,即建立,程式結束時,才消失
   堆區
   代碼區
   棧區:儲存局部變數。插入資料從棧頂插入,先進後出結構。
         如果函數不調用的話,局部變數是不存在的
         在main函數與其他函數之間有個標記,一旦函數返回,棧頂下落到標記處
         棧中的資料是變化頻繁的
         函數調用時建立,函數返回即消失

7、 值傳遞
  函數調用並不是傳遞實參本身,而是建立一個臨時變數傳到函數中
   (1)為形參建立一個臨時變數,臨時變數的值是拷貝實參的值
   (2)對形參的使用,實際上是對臨時變數的使用,不會改變實參的大小

8、預設參數
    (1)area(float a , float b =10); 當只傳遞一個參數時,形參b的位置預設為10
    (2)有預設值的形參靠右擺放

9、內嵌函式
   聲明時加“inline”,運行效率高,不支援結構控制語句,必須先定義,不支援函數原形。

10、遞迴函式
    在函數內部自己調用自己。
    必須有明確的返回條件----遞迴的出口

11、函數重載
    (1)函數名相同。
    (2)參數表不同(參數個數不同,參數類型不同,參數順序不同)。
    (3)與參數名和傳回型別不關
    調用時會根據參數表匹配自動調用相應的函數
    編譯之後,函數的名字都會發生改變,後面會加上形參縮寫作為尾碼,沒有任何函數的名字是一樣的
    不會做自動型別提升
    對重載的函數最好不使用參數預設值

12、const
    在函數內部不允許修改此形參

13、需求分析、設計、代碼實現

View Code

    =========================================                 chang.h    =========================================    char change( char );
View Code

    =========================================               chang_impl.cc    =========================================    char change( char c ){        if( c >= 97 && c <= 122 ){                return c - 32 ;        }else if( c >= 65 && c <= 90 ){                return c + 32 ;        }else{                return c ;        }    }
View Code

    =========================================               main.cc    =========================================    #include <iostream>    #include "change.h"    using namespace std;     int main(){        char c = '0' ;        while( 1 ){                cout<<"enter a char [ 0 exit] >";                cin>>c ;                if( c == '0' ){                        break;                }                 cout<<" ====> " << change( c ) <<endl;        }        return 0 ;    }

14、外部變數和內部變數
    外部變數:extern int g; ----聲明外部變數,引入一個變數,在別的來源程式中聲明
    內部變數:在源檔案中聲明的變數
 
    外部變數肯定是一個全域變數!

                           範圍            生命週期                              儲存位置
    全域變數(外部變數)  所有函數    程式啟動->程式結束                           資料區 Data
    局部變數              函數內部    函數開始調用->函數返回                       棧 Stack
    靜態局部               函數中    第一次調用函數時(只被初始化一次)->程式結束    資料區     ---只需要一份資料,並且不希望別的函數訪問他
    靜態全域             本源檔案中   程式開始->程式結束                           資料區

作業:實現銀行業務  =========  a.cc  ==================
                    long  id;
                    int password;
                    double  balance;
                   
                    long(id) create(balance , password);  //建立賬戶
                    void save( sum );
                    int(staus 0,-1) withdraw(sum , password);
                    float query();
                    ===================================
                    generatorId();  //得到唯一的ID號
                    int showMenu(); //現實主菜單
                   
                    saveMenu();  //收集開戶資訊,然後調用建立賬戶
                    createMenu();
                    withdrawMenu();
                    queryMenu();
                    ===================================

***今日重點:(1)形參和實參的區別
             (2)遞迴
             (3)函數重載
           
             練習:   觀察費波拉切數列1,1,2,3,5,8,13,21,34. . . . . .第一項和第二項都是1,後面的每一項是前面相鄰兩項的和。
                      使用遞迴方法計算第n項的費波拉切數列結果。

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.