關於 c與c++知識點,你該瞭解這些 (二)


這是我自己在學習c++基礎的過程中,順便複習了下C語言,然後總結的一些小小知識點。


關於 c與c++知識點,你該瞭解這些 (二)

1.

C++內存分爲四個區

  //  代碼區  存放函數體的二進制代碼

  //  全局區  存放全局變量和靜態變量以及常量

  //  棧區     編譯器自動分配 存放函數參數值 局部變量

  //  堆區     程序員分配和釋放,程序員不釋放,程序結束時操作系統回收

  //  意義: 不同區域存放的數據,賦予不同的生命中秋,給予更大的靈活編程 
  // 代碼區  (程序運行前就有)存放二進制機器指令 特點 : 共享、只讀

  // 全局區  (程序運行前就有)存放全局變量和靜態變量以及常量  該區的數據在程序結束後,由操作系統釋放  

  // 在全局區(靜態變量 static關鍵字  常量(字符串常量和const 修飾的全局變量))   不在全局區的數據(局部常量)

  // 棧區   (程序運行後纔有)不要返回局部變量的地址  

  // 堆區  (程序運行後纔有)(程序員手動開闢和釋放(delete))利用new關鍵字,將數據開闢到堆區返回的直接是地址 

   int * p = new int (10) ;  // 指針本質在棧區,其數據在堆區  

2.

 new                   // 返回的是該數據類型的指針  
 int * p=new int(10) ; // 創建了一個new型爲10的變量地址  (釋放 delete p;) 

3.

 int * array = nem int[10]; 
// 創建了一個變量爲整型個數爲10的數組,他的首地址給了array (釋放數組  delete[] arr;)

4.

// 引用:就是給變量起別名  

// 語法:數據類型 &別名=原名   對別名進行操作等於對原名的數據進行操作  
    
   int a=10;

   int & b = a; b = 20;  // 那麼 a也爲20

5.

  // 引用的注意事項  

  // 1) 引用的時候必須要給予初始化  
      
    int & b = a; (引用過程給予初始化,只有這一種寫法) 

  // 2) 引用一旦初始化後,不可更改  

6.

 // 引用也會使得形參修飾實參  
   void my3(int &a,int &b)  //  有兩種解決辦法  指針 和 引用  

 // 注意事項:

 //  1 )不要返回局部變量的引用
      
     int &test()
   {
      int a=10;return a;
   } 

 //  2 )函數的調用可以作爲左值 

     int &ref=test();

     test()=100;

     cout << ref << endl; 

     ref = 100;

7.

 //引用的本質是一個指針常量  

  int a=10;

  int &b = a; // 相當於 int * const  b = &a;  這也就是爲什麼引用不可修改,因爲指針常量的指針指                  向不可修改(b中保存着a的地址)

   cout << a << b << endl; a = b = 10;

 // b = 20解引用  也就是*b = 20;

8.

 // 常量引用  
     
 // 引用的兩種寫法
 // 1 ) 
     int a=10;
         
     int & b = a  // (必須爲名稱,不能爲10);

 // 2) 
    const int & b = 10;    // 第二種相當於編譯器系統設置了一個變量
        
    int temp = 10;
       
    const int  &b = temp;

    b = 20   // (這是錯誤的,因爲加上const 之後變爲只讀不可修改狀態)

9.

 // 函數默認參數 優先用戶自定義的 

 int fun(int a,int b=10,int c=30)
 { 
     return a+b+c;
 }

 main
 { 
     cout << fun (10 , 30 , 30 ) ;   
 }     
 // 70; 

 // 當某個位置有了默認參數,那麼他後邊都必須是默認參數(例如 b爲默認參數,那麼 c 也必須是默認參數)

10.

// 聲明和實現 只能有一個有默認參數 
 
 int fun (int a = 10,int b = 30); 

 int fun(int a , int b)
 {
     return a + b;
 } 
  
// 40

11.

// 佔位參數(只有函數類型,沒有名字) 
 void fun ( int a , int)
 {
     cout << ” abc ” ; 
 } 

 // 引用時fun(10 , 10)  佔位參數還可以有默認參數

void fun(int a , int  = 10) 
{ 
    return “ abc ” ;  
}  

// 引用時 fun( 10 )   

12.

 // 函數重載(函數名可以相同) 

 // 條件 : 同一個作用域下  函數名稱相同  函數的參數類型不同 或者 個數不同或者順序不同 

 // 注意:函數的返回值不可以作爲函數重載的條件,如下 
    void fun ( ) 
    void fun(int a)   
    void fun(double b)  

13.

c++面向對象特性 封裝 繼承 多態 萬事萬物都皆爲對象

14.

 c++ class aa

 {

 //訪問權限

 //屬性(變量)

 //行爲(函數)

 }

15.

屬性和行爲 都稱之爲 成員 成員屬性 = 屬性

16.

 public     // 公共權限  成員  類內可以訪問  類外可以訪問

 Protected  // 保護權限  成員  類內可以訪問  類外不可以訪問(兒子可以訪問父親的保護內容)

 Private    // 私有權限  成員  類內可以訪問 類外不可以訪問(兒子不可以訪問父親私有權限)

17.

struct  class  // 區別在於  默認訪問權限不同  
    
struct // 默認爲公共 public
    
class  // 默認爲私有 private   

未完待續…

有什麼問題歡迎給我留言哦

hexo博客:https:www.ho-brother.ltd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章