データ構造 - ポインタ

ポインタ

コンセプト:

(1)pが値(Pが格納されている)であり、変数のアドレス(メモリアドレスが可変である)ポインタ/アドレス変数です。

pは、変数を指す変数、アドレス(内)を与えました。変数は、pの対象となります。

P(2)* p値は、先の尖っています。

→* pが値、ポイントに変数の値であります

 

原則

アドレスでのみ示すパラメータの後ろに(1)*、* P

(2)&背後にある唯一の変数を持ちます。Aのアドレスを示すパラメータ&

(割り当ては同じになりますが、結果が間違っているであろう場合)(3)「=」デフォルトで割り当ては、パラメータ設定の同じタイプを許可されています

アドレス(ポインタ)アドレスに割り当て→のみ、(ポインタ)

(変数)の値に割り当てられる(可変)値

 

定義

定義の基本型ポインタElemtype * elemは。

(ElemType単位コンテンツタイプは、ポインタのポイントです)

C言語は、特定の文字列型ではありません、我々は通常、文字の配列に文字列を入れて

 

割り当てが定義されている場合:INT * P =&(√)(AS&格納されたp個の初期アドレス)

対応のint * P、P =&;

(すなわち★★★定義INT *ときにベース変数アドレスを割り当てる必要のアドレス、および定義された値の後に* P、割当値に必要であることを理解すべきP)

ポインタpは変数を指していないので、我々はアドレスを割り当てる必要があります

 

同様のint * pは=;×

値(整数変数)は、アドレス(変数)に割り当てられていません

対応は、* P int型; P = K;(×)

 

★★★アドレス割り当て&K

int型* P、* qは、= 20; 

 

①* P = A;√ポインタpのアドレス割り当てに

(すべての値は指さ変数に代入* p値が達成されるであろう)

 

②q= P;√(P / QがQにpの値を達成するためのポインタ、代入文であるため)

③p= Q =&;√(P / Q(アドレスの値)、およびアドレス)

④p= * Q;×P = A;×(Pアドレス、* qは、値)

⑤a= * P; * p = * Q;√(すべての値)

 

値(ポインタの構造タイプ)

もし特定のデータ型の変数へのポインタの定義

ニレ* P = STU1。

(* PをELEMに相当; p =&STU1;)

(* P).nameのと同等Stu1.name

そしてP→名前と等しい名前構造変数P部材(ノード)(値)を参照

 

 

アレイポインタ(すなわち、配列はポインタへのポインタ点の配列で、ポインタが、アレイのベースアドレスに格納されています)

ポインタ変数はアレイの名前に初期化される場合、(第1のアドレスSTRに格納されているP)アレイへのポインタ変数ポイント前記

文字列str [20]、* P; P = STR。

配列の文字値を変更することができます(書き込み可能)

 

char型のポインタで

char * strの= "私は中国を愛して!"。

または(真ん中のライン限り*任意の位置)

char * strの。STR =「私は中国を愛して!」。

固定された定数文字列(第1の文字列のアドレス、すなわち、最初のアドレス)をポイントは、書き込み可能な読み出し専用ではありません

コマンド入力文字列を作るためのシャアstrのポインタ、文字列がすべて一定で出力されます。(最初の文字を印刷すると、自動的に完全な文字列を出力します)

 

★文字配列ポインタとポインタの違い

(1)CHAR * P(文字定義ポインタ)

(2)①p=配列名(最初の配列ポインタに割り当てられているアレイアドレス/アドレス)

P =文字列(文字列アドレス/アドレスは、文字ポインタの最初の文字に割り当てられています)

 

 

★★★

*(P + N)、P [n]は要素の第(I 1 +)の値であります

 

異なる★★★C / C ++のポインタ

輸出

printf( "%s" は、P);→出力文字列(文字列は、pによって指さ)

printf( "%dの"、P);→出力ポインタ値p

 

C ++ 

出力:

COUT * P→出力文字列(メモリポインタ)

出力ポインタ→COUT pがアドレスに格納されています

 

 

関数ポインタ

機能変数へのポインタです。

戻り値の型(*関数ポインタ名)(プリミティブパラメータ)

割り当て:関数名=名への関数ポインタ。

コール:関数ポインタ名(パラメータ);

 

ポインタ変数は、関数を呼び出すために使用することができます。

 

コマンドおよび実行される通常の変数関数は、メモリの場合と同様です

メモリ内のアドレスが存在しますので、

最初のコマンドの機能は、例外を起動しません

そして、その開始アドレスは、関数のアドレスと呼ばれています

今は、このアドレスへのポインタを持ちます

このコマンドポインタ格納されたアドレスへの間接的なアクセス、この機能が活性化されると

 

このポインタは関数ポインタと呼ばれています

「関数ポインタは、」実際に「関数へのポインタ」を意味します

「関数ポインタ」機能のクラスです。どのようなクラスですか?ポインタを返す関数であります

実際には、良いメモリ

「XX機能は、」戻り値は「XX」の関数です。

 

 

 

 

 

 

 

 

公開された46元の記事 ウォン称賛15 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_41850194/article/details/91873147