ポインタ変数の定義
*名前を入力します。
ここで、「*」彼を表現するためには、ポインタ変数です。
第二に、ポインタ代入
int型* P = nullptr;
ここで、nullptrはNULLポインタであります
int型のA = 2;
P =&;
「&」アドレスp、必見int型へのポインタを渡すために(多くの場合、scanf関数で使用されている)アドレスを取得する文字。もちろん、P-直接アクセス、アドレス動作。操作は、間接ポインタ演算子「*」に追加する必要があります。
注意してください!
図1に示すように、ポインタ変数番号を割り当てることができません
2変更したいとき、ポインタ変数が「*」アドレスを追加することはできません
3、のprintf( "%d個"、p)は、出力アドレスポインタとのprintf( "%d個"、* p)を、ポインタ値が出力されます
通常の変数と代入とポインタ変数は、使用する前に定義します。INT * P =&;のprintfに等しく;そして、P *はP、占有セルの開始アドレスに格納され、Aと同じであるので、のprintf( "%dの"、* P)されているintを定義した通り( "%dの"、A)。
例1
問題B + A (ポインタ版)
#include <cstdioを> 使用して 名前空間STD; int型のmain(){ int型 A、B、P1 *、P2 *; // 一般的な変数の宣言ポインタ P1 =&A; // ポインタ変数代入 P2 =&B; scanfの(" % %D D "P1、P2); // P1及びP2は、直接アドレスを格納され、アドレスが取らなければならない のprintf(" %のD "、* P1の+ P2に); // の内容追加することによってアドレスをフェッチ 戻り 0 ; }
第三に、加減算ポインタ変数
ポインタは、唯一の2つの動作モードをサポートしています!+と - 、および配列の一般的な操作で
例2
りんご狩りタオタオ(ポインタ版)
タイトル説明https://www.luogu.org/problemnew/show/P1046
#include <cstdioを> 使用して 名前空間STD、 INT A [ 10 ]; int型のmain(){ int型 Iは、Hは、SUMは、* P; // 変数を宣言 するための(I = 0 ;私は< 10 ; I ++の) scanfの(" % D "A&[I]); // ループ入力 scanfの(" %のD "、&H); // 入力自体の高さ Hは、+ = 30 ; // プラススツール高 SUM = 0 ; // Appleは総数選ぶことができ 、Pを=; //最初のアドレスアレイである ため(I = 0 ;私は< 10 ; Iは++ ){ IF(* P <= H) // 選択するか否かを判断 SUM ++を; // 選択することができる+ +1 P ++; // このp ++は(それがダブルプラスのsizeof(ダブル)であれば、ポインタ変数の彼はどのようなタイプを参照すること)+1でのメモリアドレスではなく、+はsizeof(int型) } のprintf(" %d個"、SUM); // 出力トータル リターン 0 ;
}
私たちは、到着後に整数を指し++ Pを見ることができます。このようにして得られる:P--到着は整数前、P = P + 3が後方へ移動させる3の整数であり、(P + 3)以降の第三の整数のアドレスです。