ホームページ >バックエンド開発 >C#.Net チュートリアル >C言語関数の基礎知識は何ですか?

C言語関数の基礎知識は何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-06-11 16:36:584581ブラウズ


C言語関数の基礎知識は何ですか?

#C 言語関数の基本的な知識は何ですか?

C 言語関数の基本的な知識:

1. 定義、宣言、呼び出し

関数: 再利用できるコードの一部関数の 3 つの要素:戻り値関数名関数パラメータリスト関数宣言:関数の 3 つの要素が含まれます関数定義:関数の具体的な実装#戻り値: 関数に戻り値がない場合、void #関数パラメータリスト:##パラメータがない場合は空として記述し、変数をカンマで区切ります# 2. 関数宣言:


として記述されます。

関数を宣言する場合、仮パラメータには変数名を指定することも、型のみを指定することもできます。

int add(int, int);

##三、関数定義:

#関数を定義する場合、仮パラメータには変数名が必要です

int add(int a, int b)
{
int sum = a + b;
return sum;
}

## 4. 関数呼び出し:
関数が main 関数の上に定義されている場合、関数宣言を記述する必要はありません。

関数がメイン関数の下に定義されている場合、宣言はメイン関数の上に記述する必要があります

int main()
{
int a = 10;
int b = 20;
// 函数调用的时候,传的参数叫实参
int sum= add(a, b);
printf (“sum = %d\n”, sum);
return 0;
}


## 5. 関数名


関数名は関数のエントリアドレスです

関数ポインタを定義します:

int (*p)(int a.int b) =add;
6. 再帰関数

関数本体内で自分自身を呼び出す関数は再帰呼び出しと呼ばれ、この関数は再帰関数と呼ばれます。再帰関数を実行すると、それ自体が繰り返し呼び出され、そのたびに新しいレベルに入ります。

再帰を使用して n! を計算します。階乗 n! の計算式は次のとおりです:

式によるプログラミング:

long factorial(int n)
{
long result;
if(n ==0 || n ==1)
{
result = 1;
}
else
{
result = factorial(n-1) * n; // 递归调用
}
return result;
}

これは典型的な再帰関数です。階乗を呼び出した後、関数本体に入ります。関数は、n== 0 または n==1 の場合にのみ実行を終了し、それ以外の場合は関数自体を呼び出し続けます。

各呼び出しの実パラメータは n-1 であるため、つまり、n-1 の値が仮パラメータ n に割り当てられるため、再帰実パラメータの値は 1 減ります。最後の n まで毎回 - 1 の値が 1 の場合、再度再帰呼び出しを行い、仮パラメータ n の値も 1 になります。再帰は終了し、層ごとに終了します。

たとえば、5! を見つけるには、factorial(5) を呼び出します。階乗関数本体に入るとき、n=5 は 0 または 1 に等しくないため、result = fastial(n-1) * n; が実行されます。つまり、result = fastial(5-1) * 5; が実行されます。次のステップは、factorial(4) を呼び出すことです。これが最初の再帰です。

4 回の再帰呼び出しの後、実際のパラメーターの値は 1 になります。つまり、factorial(1) が呼び出されます。この時点で再帰は終了し、レイヤーごとに戻り始めます。 fastial(1) の値は 1、factorial(2) の値は 12=2、factorial(3) の値は 23=6、factorial(4) の値は 64=24、そして最終的な戻り値Factorial(5) の値は 245=120 です。

注:

1. 再帰呼び出しが終了せずに続行するのを防ぐには、関数内で再帰呼び出しを終了する手段が必要です。一般的な方法としては、条件判定を加えて、ある条件を満たすと再帰呼び出しを行わずに階層ごとに返すという方法があります。

2. 再帰呼び出しは理解が難しいだけでなく、非常にコストがかかるため、必要な場合以外は再帰を使用することはお勧めできません。多くの再帰呼び出しは反復 (ループ) に置き換えることができます。

推奨チュートリアル: 「

C ビデオ チュートリアル

以上がC言語関数の基礎知識は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。