C+|C++入門チュートリアル(7)ポインタ

1642 ワード

7ポインタ
7.1ポインタの基本概念
≪アクション|Action|oraolap≫:ポインタによるメモリへの間接アクセス
  • メモリ番号は0から始まり、一般的に16進数で表される(具体的な数バイトはシステムを見るべき)
  • は、ポインタ変数を利用して変数のアドレス
  • を格納することができる.
    7.2ポインタ変数の定義と使用
    構文:dataType * pointVariableName = &variableName&はアドレスを取る記号です.
    ポインタがアクセスするメモリには、逆参照記号*を使用してアクセスできます.*pointVariableNameは、variableNameというメモリに格納されている変数を表します.
    7.3ポインタのメモリ容量
    ポインタもデータ型ですが、このタイプはどのくらいのスペースを占めていますか?
    推測は、システムに関連しています.64ビットのシステムのメモリアドレスは64ビットであり、32ビットのシステムは32ビットである可能性があります.
    32ビットシステムで4バイトを占有します.64ビットシステムは8バイトを占めています.しかし、ほとんどの開発環境は32ビットです.(ここでは、x 64コンパイル環境を選択して切り替えることもできます.
    7.4空のポインタと野のポインタ
    空のポインタ:ポインタ変数はメモリの0番のスペースを指します.
    用途:初期化
    注意:空のポインタが指すメモリはアクセスできません.
    構文:dataType* pointVariableName = NULL;野ポインタ:ポインタが不正なメモリ領域を指しています
    これはエラーです.プログラムに野ポインタが出ないようにしてください.
    構文:int* p = (int*) 0x1100;しかし、実際には0 x 1100という空間は申請されていません.この空間には変数が宣言されていないし、システムにメモリが割り当てられていない.したがってアクセス権はありません.このようなプログラムには間違いがある.
    7.5 const修飾ポインタ
    const修飾ポインタには3つのケースがあります.
  • const修飾ポインタ:定数ポインタconst dataType* pointVariableNameポインタ自体は変更できますが、ポインタが指す値はポインタで変更できません.
  • const修飾変数:ポインタ定数dataType* const pointVariableNameポインタ自体は変更できませんが、ポインタが指す値は変更できます.
  • constすなわち修飾ポインタまた修飾変数は2つのconstでconst dataType* const pointVariableName
  • でよい.
    7.6アドレス
    ポインタはパラメータとして関数に入力できます.このプロセスはアドレス伝達となり,アドレスとも呼ばれる.アドレスを転送すると、実パラメータの具体的な値を変更できます.
    配列をパラメータ伝達関数として選択すると、2つの伝達法があり、1つはint arr[]であり、配列はポインタと見なすことができるので、int* arrの方法で伝達することも選択でき、これにより彼はポインタとして伝達される.