著者の序文
個人ホームページ::小さなページ
gitee ページ: David Qin
共有するのが大好きな小さなブロガーです 学ぶべきすべてのかわいい人を歓迎します
______________________________________________________________________
目次
1. 関数とは何ですか
2. ライブラリ関数
3. カスタム機能
4. 関数パラメータ
5. 関数呼び出し
6. 関数のネストされた呼び出しとチェーンされたアクセス
7. 関数の宣言と定義
8. 関数の再帰
_____________________________________________________
隙間ナレッジ
1. c99 標準では、可変長配列の概念が追加されました。配列のサイズは変数で指定できますが、一度決定された配列のサイズは変更できません。可変長配列は初期化できません。VS 環境は可変長配列をサポートしていません。
2.define、#includeなどはキーワードではなく前処理命令です
3. ポインタはアドレスですが、通常、p はポインタ、p はポインタ変数と言います。そのため、口語的なポインタはポインタ変数を指します。
4. 平均値の算出方法
方法 1: (a+b)/2 (これを記述することはお勧めしません)
方法 2:
余った部分を均等に分けるだけで完了です。
a+(ba)/2
関数とは何ですか?
数学に関する限り、数学関数は f(x)=ax+b に似ており、C 言語関数もこれに似ていますが、次の点が異なります。
C 言語では、ax+b だけでなく、多くのコンテンツが結合されて f(x) を形成します。f(x) には通常、入力パラメーターと戻り値が含まれ、プロセスのカプセル化と詳細の隠蔽を実現します。
C言語における関数の分類:
1. ライブラリ関数
2. カスタム機能
ライブラリ関数
ライブラリ関数とは、簡単に言うとC言語コンパイラメーカーが提供する関数で、ヘッダファイルを呼び出すことが前提となっています。
、C 言語は、次のように、この関数の使用方法と作成方法を指定するためにのみ使用されます。
C 言語標準では次のように規定されています。
1. 関数の機能 - 文字長の計算など
2. 関数名 -------strlen
3. パラメータ --------strlen(const char* str)
4. 戻り値の型 --------isize_t
簡単にまとめると、C言語で一般的に使用されるライブラリ関数は次のとおりです。
興味のあるお子様はここに来てご覧くださいhttps://cplusplus.com/reference/cctype/
カスタム関数
ret_type fun_name(para1, * )
{
statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1 函数参数
上記は関数の基本的な構成であり、単純に関数名、パラメータ、関数本体、戻り値の型です。
たとえば、2 つの数値の最大値を見つける関数定義を作成します。
#include<stdio.h>
//int compare(int a, int b)
//{
// return (a > b ? a : b);
//}
int* compare(int* a, int* b)
{
return (*a > *b ? a : b);
}
int main()
{
int a = 1;
int b = 6;
compare(&a, &b);
printf("%d", *compare(&a, &b));
return 0;
}
実行すると、最初の定義関数を使用しても num1 と num2 の値が変更されないことがわかります。これは、実パラメータが仮パラメータに渡されるためです。仮パラメータは、実際には実パラメータの一時的なコピーです。仮パラメータを変更しても、実パラメータは変更されません。
2 番目の方法はアドレスを操作することで実現されます。
関数の.parameters
実パラメータ (実パラメータ)
簡単に言えば、値が渡された後のパラメータです。上図に示すように、&num1 は実パラメータ (実数値) であり、関数を呼び出した後のパラメータが実パラメータになると理解できます。
実際のパラメータは、定数、変数、式、関数などです。
仮パラメータ(パラメータ)
仮パラメータは、関数が呼び出されたときにのみインスタンス化されるため、関数名の後の括弧内の変数を参照します。
関数呼び出し:
#include<stdio.h>
#include<math.h>
int is_prime(int i)
{
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0;
for (i = 101; i <= 200; i += 2)
{
int a = is_prime(i);
if (a)
{
printf("%d ", i);
}
}
return 0;
}
ネストされた呼び出しと関数の連鎖アクセス
ネストされた呼び出し
簡単に言うと、関数の中に関数呼び出しがありますが、関数の内部で関数定義を定義することはできないことに注意してください。
要約:
ここではC言語の機能を紹介し、その後のフォローアップも行います。