ポインタ定義に関するいくつかの問題

3786 ワード

constの定数を定義する上での使用問題については、学習のC/C++の過程で、頭が回らないことがよくあります.例えばこのconstの使用.私がint*const a、const int*a、const int*const a、const int*a、int const*aを見たとき、頭が大きくなったのは、自分の基礎のためである一方で、このいくつかの声明が高い一致性を持っているからだ.詳しい比較学習を経て、今日はそれらの違いを以下にリストします.
int*const a//aはポインタ定数であり、aは変更できない.すなわち、aをint*const a=&bに初期化した後、a=&cを初期化することはできないが、aが指す内容は変更できる.そしてaは宣言時に初期化される
int const*a//aは定数ポインタであり、aによってaが指す内容を変更することはできないが、aが指す内容はint b=1など自分で変更することができる.a= &b ;これ以上*a=2を行うことはできません.しかし、b=2であってもよい.
const int* a ; //aは定数ポインタであり、int const*aを制限し、使用する.
const int*a//aは定数ポインタであり、int const*aとの使用を制限し、使用する.
const int*const a//aはポインタ定数で定数のポインタであり、aは変更できず、aによってaが指す内容を変更できず、aは宣言時に初期化される.
詳細は以下のコードを参照してください.
#include
 using namespace std ;
 int main()
{      
      int a = 1 ;
      int b = 2 ;
      int c = 3 ;
      int d = 4 ;
      int e = 5 ;

      int* const A = &a ;//A            
      cout<//  A = &b ;       //  ,   A        
     // int* const A1 ;  //A1     ,   

         const int* const E = &e ;  // E            
    // const int* const E1 ;    //   E1     ,       
   //   E = &a ;        //    E       ,   
     // *E = 6 ;      //     E E          ,   
     e = 7 ;           //E           ,       
     cout<//          
     int const *B ;     //B             
     B = &b ;   //   B   ,  
     B = &c ;   //    B,   
     //*B = 3 ;         //  ,    B b     
     b = 3 ; 
     cout<const  int  *C ;     //C             
     C = &c ;   //   B,  
     C = &d ;    //    C   ,   
     //*C = 4 ;         //  ,    C c     
     c = 4 ; 
     cout<const  int* D ;     //C             
     D = &c ;   //   B,  
     D = &e ;    //    E   ,   
     //*D = 4 ;         //  ,    D d     
     d = 5 ; 
     cout<return 0 ;
}

書き終わって、みんなに役に立つことを望んで、ありがとうございます!