ポインタの研究ノート

ポインタ変数の定義

*名前を入力します。

ここで、「*」彼を表現するためには、ポインタ変数です。

 

第二に、ポインタ代入

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)以降の第三の整数のアドレスです。

おすすめ

転載: www.cnblogs.com/wyc06/p/11306576.html