小談C言語のconst、static

1555 ワード

constの修飾があることは、 ( )を意味することを知っています.
constの役割:
  • 変数が変更されるのを阻止するには、constキーワードを使用します.
  • ポインタについては、ポインタ自体がconstであることを指定してもよいし、ポインタが指すデータがconstであることを指定してもよいし、両者が同時にconstであることを指定してもよい.
  • 関数宣言では、constはパラメータを修飾することができ、関数内部で値を変更できない入力パラメータであることを示します.
  • クラスのメンバー関数についてconstタイプとして指定すると、クラスのメンバー変数は変更できない定数関数であることを示します.

  • では、次のような声明はどういう意味ですか.
    const int a;  
    int const a;  
    const int * a;  
    int const * a;  
    int * const a;  
    int const * const a;  
    const int * const a;  
    

    const int a; const(読み取り専用)のintタイプを宣言する変数a
    int const a; const(読み取り専用)のintタイプを宣言する変数a
    const int * a; const int(定数数)を指すポインタaが宣言され、そのポインタが指すintタイプの数は変更できないが、ポインタは変更できる.
    int const * a; const int(定数数)を指すポインタaが宣言され、そのポインタが指すintタイプの数は変更できないが、ポインタは変更できる.
    int * const a; int(整数数)を指すconst(常)ポインタaが宣言され、そのポインタが指すintタイプの数は変更可能であるが、ポインタは変更できない.
    int const * const a; const int(定数)を指すconst(定数)ポインタaが宣言され、そのポインタが指すintタイプの数は変更できず、ポインタも変更できない.
    const int * const a; const int(定数)を指すconst(定数)ポインタaが宣言され、そのポインタが指すintタイプの数は変更できず、ポインタも変更できない.
    staticの役割:
  • 関数内のstatic変数の作用範囲はこの関数体であり、auto変数とは異なり、この変数のメモリは1回しか割り当てられないため、その値は次回の呼び出し時に前回の値
  • を維持する.
  • モジュール内のstaticグローバル変数は、モジュール内で使用される関数によってアクセスすることができるが、モジュール外の他の関数によってアクセスすることはできない.
  • モジュール内のstatic関数は、このモジュール内の他の関数によってのみ呼び出され、この関数の使用範囲は、宣言されたモジュール内に制限される.
  • クラス内のstaticメンバー変数はクラス全体が所有し、クラスのすべてのオブジェクトに対して1つのコピーしかありません.
  • クラス内のstaticメンバー関数はクラス全体が所有するものであり、この関数はthisポインタを受け入れることができないため、クラスのstaticメンバー変数にのみアクセスできます.