ホームページ > 記事 > コンピューターのチュートリアル > ポインタを使用して記述されたC言語関数の実装
int find(char*source/*source string*/, char* target/*substring*/)//ソース文字列内で返された位置が見つかりました。見つからなかった場合は、-1 が返されます。見つかった場合は、 、1 を返します。 、return i を return 1 に変更します;
{
int i,j;
int s_len=strlen(ソース);
int t_len=strlen(ターゲット);
if(t_len>s_len)
{
-1 を返す;
}
for(i=0;i
{
j=0;
int フラグ=1;
if(ソース[i]==ターゲット[j])
{
int k,p=i;
for(k=0;k {
if(ソース[p]==ターゲット[j])
{
p ;
j ;
###続く;###}
###それ以外###{
フラグ=0;
###壊す;###}
}
}
###それ以外###{
###続く;###}
if(フラグ==1)
{
私を返します;
}
}
-1 を返す;
}
関数へのポインタを使用したプログラミング
関数ポインタは非常に便利な場合があります。たとえば、構造体に関数ポインタを定義すると、C クラスのメンバー関数と同様の機能を C 言語で実装できます。
次のプログラムは関数ポインターの配列を定義します。入力数値の残り (1 または 0) に応じて、if else なしで対応する関数を呼び出すことができます。//入力が奇数です
void FuncOdd(int n)
{
printf("奇数を入力しました。\n");
for (i = 1; i {
nイテレータ =1/i;
}
printf("結果は次のとおりです: %f\n",nIterator);
}
//入力は偶数です
void FuncEven(int n)
{
float i、nIterator = 0;
printf("偶数が入力されました;\n");
for (i = 2; i {
nイテレータ =1/i;
}
printf("結果は次のとおりです: %f\n",nIterator);
}
int main()
{
int nInput = 0; //入力された数値を保存
void (*func[2])(int); // 2 つの異なる関数を指す関数ポインターを定義します
func[0] = FuncEven;
func[1] = FuncOdd;
printf("数値を入力してください:"); // コンソールから入力を取得します
scanf("%d",&nInput);
(*func[nInput%2])(nInput); // 入力された数値に基づいて対応する関数を呼び出します
0を返す;
}
C言語ポインタの使用法
int top はポインタのカテゴリに属するのではなく、int の共通変数の定義に属すべきです。この top は使い方によって異なります。負の数、0、正の数に従って使用される場合、次のようになります。このクラスの特別な定義識別子として使用されているかどうかを判断し、この変数がループ内のカウンタ (ループ回数が増加または減少することを意味します) である場合、ループが何回正常に実行されたかを判断できます。
##Reader はクラス名です。つまり、クラスはデータ型でもあります
int と同様、データ型名です
Reader read[Maxr]; は、この型の配列変数が定義されていることを意味します。Marxr はおそらくマクロによって定義された値です。
なぜこのように定義できるのでしょうか?クラスには外部クラスを含む任意のデータ型 (C の struct と同じ) を含めることができるためです
以上がポインタを使用して記述されたC言語関数の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。