用子彈筆記學C++(1)

  • 前置++和後置++
    • 區別: i++的實現原理是現將i自增1,然後返回i的引用,++i是先定義一個i的副本,最後返回之前定義的副本的值
    • 前置更快
    • 並非是從左到右。在C++中沒有規定大多數二元運算的兩個對象的計算順序(除了&&、|| 和 ,),也沒有規定函數參數和被調函數的計算順序。C/C++ 語言的規定告訴我們,任何依賴於特定計算順序、依賴於在順序點之間實現修改效果的表達式,其結果都沒有保證。
  • printf和scanf
    • printf
      • 格式[標誌][輸出最少寬度][.精度][長度]類型
      • 其中,轉換說明符表示的是類型,較生疏的有
        • %c字符
        • %f 注意報考float和double
        • %e(E) 科學計數法
        • %g(G) 浮點數不顯示無意義的0
        • %i 同%d
        • %u 無符號十進制
        • %o 八進制
        • %x 十六進制
        • %p 指針
        • %s 字符串
      • 標誌
        • - 左對齊
        • + 右對齊
        • # 對非十進制加前綴,比如o,ox
      • 精度控制
        • 注意一下m.n的問題
        • 這裏n是小數點後的位數
        • m是輸出的總長度,但是可以這麼理解,如果m比本身的數據長度要小的話,m沒什麼用
  • C++中的const
    • 常對象,必須初始化,初始值可以是任意複雜的表達式
      • 默認狀態下,const對象僅在文件內有效
      • 因爲編譯器會在編譯的過程中用常量替換變量名,可能會出現不同文件給相同const 對象名給了不同的初值。
      • 如果像在多個文件共享const對象,那麼必須在變量的定義和聲明之前都添加上extern關鍵字。
    • 常數據成員
    • const可用於函數重載
    • 修飾類成員函數
      • 我們儘量按照要求將所有的不需要改變對象內容的函數都作爲 const 成員函數。
      • 可以使用 mutable 關鍵字修飾這個成員,mutable 的意思也是易變的,容易改變的意思,被 mutable 關鍵字修飾的成員可以處於不斷變化中,如下面的例子。
      • const 關鍵字不能與 static 關鍵字同時使用,因爲 static 關鍵字修飾靜態成員函數,靜態成員函數不含有 this 指針,即不能實例化,const 成員函數必須具體到某一實例。
  • C++ 內存分佈
    • 1.棧區: 由編譯器自動分配釋放,像局部變量,函數參數,都是在棧區。會隨着作用域退出而釋放空間。
    • 3.堆區:程序員分配並釋放的區域,像malloc(c),new(c++)
    • 3.全局數據區(靜態區):
      • BSS
        • 未初始化的全局變量和靜態變量
      • 數據段
        • 初始化的全局變量,屬於靜態內存分配
    • 4.代碼區
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章