また、プログラムによってポインタの役割を理解しています。
コードの場合:
1つの#include <stdio.hの> 2 3 ボイド検索(char型の配列[]、チャー検索、チャー ** PA) 4 { 5 INT I。 6 用(i = 0 ; *(配列+ I)!= ' \ 0 ' ; iは++ ) 7 { 8 であれば(配列[I] == 検索) 9 { 10 * PA =配列+ I。 11 ** PA =(I + 1 )。 12 ブレーク; 13 } 14 15 } 16 } 17 18 INTメイン(ボイド) 19 { 20 チャー CH [ 50 ]。 21 チャーC。 22 のchar * p = NULL; 23 一方、(1 ) 24 { 25 int型の選択; 26 のprintf(「入力文字列と発見されるキーワード:\ n \ n 」); 27 のscanf(" %sの%のC "、CH、&C); 28 検索(CH、C&P)。 29 であれば(p == NULL) 30 { 31 のprintf(" 文字列\ n個の\ nのキーワードを見つけることができません" )。 32 } 33 他の 34 { 35 のprintf(" %Dの\ n個の\ nの位置決幅最初のキーワードを見つける"、* P)。 36 } 37 のprintf(" あなたは終了のための入力0を終了するか、\ nを継続しますか?" ); 38 のscanf("%のD 」、および選択)、 39 であれば(選択== 0 ) 40 ブレーク; 41 他 42 続ける; 43 44 45 } 46 リターン 0 ; 47 }
このプログラムの機能は、文字列の最初の文字が指定された文字を満たしていると一致している、と彼らは文字列である位置を返します。そのような文字列abcdeabdc、所定の文字dと、第一の位置は、4日間の一致です。
分析:まず、ポインタの役割を理解するために、アドレスポインタは、そのメモリ空間は、メモリアドレスの値に対応した、独自のメモリを持っているが向けられています。イラスト、
char * P;
char *のPI;
シャア** P;
PI = P; // PIポイントメモリアドレスへ、すなわち、PI及びPポイントが同じメモリアドレス、PI及びpの値であり、Pによって指さ
// * pが保存されたメモリアドレスのpの値であります
PA =&P;メモリアドレスへ// PAのPポイント
// *メモリは、格納されたアドレス値によって指し示さPA paは、ポインタpの値つまりはPAと等価である** * P、Pメモリアドレスの値が格納されています
上記の決議を経て、それがより明確にする必要があります。
ます。https://www.cnblogs.com/sjlove/archive/2013/04/19/3029808.htmlで再現