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