C言語学習ノート4——変数属性

2847 ワード

変数のプロパティ
C言語:
変数は独自の属性を持つことができ、変数を定義するときに「属性」キー「属性」キーを付けて変数の特有の意味を示すことができます.
構文:properey type var_name;
変数属性の解析1:autoキーワード(自動変数)
  • autoは、C言語のローカル変数のデフォルト属性
  • です.
  • auto修飾変数はスタック上の
  • に格納される.
  • コンパイラのデフォルトのローカル変数はautoの
  • です.
    int main()
    {
        int i;      //           auto
    
        auto int j; //      auto   
    
        return0;
    }

    変数属性の解析2:registerキーワード(レジスタ変数)
  • registerキーワードは、ローカル変数をレジスタに格納
  • を示す.
  • registerはレジスタ変数を要求するだけであるが、必ずしも要求が成功するとは限らない
  • .
  • register変数は、CPUレジスタが許容できる値
  • である必要がある.
  • &演算子でregister変数のアドレス
  • を取得できません.
  • グローバル変数はregister変数
  • として宣言できません.
    #include 
    
    register int i;      // error
    
    int main()
    {
        register char var;
    
        printf("0x%08x", &var);    // error
    
        return 0;
    }

    変数属性の解析3:staticキーワード(静的変数)
  • staticキーワードは変数の静的属性を示す-static修飾の局所変数はプログラム静的領域
  • に記憶される.
  • staticキーワードは同時に役割ドメイン限定子の意味を持つ-static修飾のグローバル変数役割ドメインは宣言されたファイルのみ-static修飾の関数役割ドメインは宣言されたファイルのみ
  • #include 
    
    int g_v;                 //     ,            
    
    static int sg_v;        //       ,            
    
    int main()
    {
        int var//     ,        
    
        static int svar;    //       ,         
        retur 0;
    }

    変数属性の解析4:externキーワード(外部変数)
  • extern「外部」定義の変数と関数-extern変数を宣言するためにファイルの他の場所に空間を割り当てる-extern関数ファイルの他の場所に
  • を定義する
  • externは「教える」コンパイラ用にC方式で
  • をコンパイルする.
    extern "C"
    {
        int f(int a, int b)
        {
            return a + b;
        }
    }