constの差のC ++とCのconst

#include <アルゴリズム> 
の#include <iostreamの> 
する#include <機能> 
の#include <ベクトル> 
の#include <数値> 
の#include <配列> 
の#include <CStringの> 
する#include <cstdioを> 
する#include <機能> // 包装ヘッダ
使用して 名前空間  STD;
 の#if 0
 // Cの中の
INT のmain()
{ 
    CONST  INT NUM = 100 ;
     // INT A [NUM]; // エラー、numが人工一定である 
    (* INT *)&NUMが= 4。 ;
    printf(" %dの"、NUM); // 4、C言語は、CONSTのみ変更間接的に回避することができない直接変形を回避することができる、という意味で真一定ではない
    。)GETCHARを(
} 
#endifの
// 中のC ++における
INT MAIN1( )
{ 
    // CONST int型、N = 20であり;
     // INT [N]; // Cので、++コンパイラが自動的にnは10であることが見出された最適化は、直接置き換えます尽くすことができ、よりもむしろメモリを取る
    
    INT A = 10 ;
     のconst  int型のn = A; // constの疑似は一定のまま、唯一++コンパイラの最適化cを行うが、ここでは変数であります、
    int型データ[N-]; // ランダムではない++コンパイラの最適化を.Cない、なぜなら変数が変化してもよい

} 
ボイドmain3を()
{ 
    CONST  INT NUM =20 ;
     *(int型 *)(&NUM)= 3。; 
    COUT << *(&NUM)<<てendl; // 最適化は、強制的に交換がメモリから取り、レジスタ20から直接取得しない 
    coutの<<テンキー<<てendl ; // 20である

} 


ボイドmain4()
{ 
    int型   A = 10 ;
     CONST  INT NUM = A; // 直接最適化しない 
    (* INT *)(&NUM)= 3。; 
    COUT << *(&NUM)<< ENDL; / / メモリ10から直接採取し、変数を直接最適化しない 
    COUT NUMが<< << ENDL。

} 

ボイドメイン()
{ 
    CONSTの INTNUM [ 5 ] { 12345 };
     のconst  int型 * = P NUM;
     *(INT *)P = 100 ; // しかし、* P = 10、定数ポインタを変更することはできません
     // CONST値が最適化されていない、間接的に変更することができる
    ため(NUM自動I)
    { 
        COUT ; << I << ENDL // 100。
    } 

}

 

おすすめ

転載: www.cnblogs.com/bwbfight/p/11299511.html