C言語レッスン7-----関数の定義と使い方-----C言語は重要です

著者の序文

                                

                 個人ホームページ::小さなページ

                 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言語で一般的に使用されるライブラリ関数は次のとおりです。
I/O 機能
文字列操作関数
文字操作関数
記憶操作機能
時刻 / 日付関数
数学関数
その他のライブラリ関数

興味のあるお子様はここに来てご覧くださいhttps://cplusplus.com/reference/cctype/

MSDN(マイクロソフト開発者ネットワーク)
www.cplusplus.com
http://en.cppreference.com (英文版)
http://zh.cppreference.com (中国語版)
興味のある小さなかわい子ちゃんは見てみることができます

カスタム関数

ライブラリ関数と同様に、カスタム関数には関数名、戻り値の型、および関数パラメーターがあります。
しかし、違うのは、これらはすべて私たち自身が設計したものであるということです。これにより、プログラマーに多くの余地が与えられます
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言語の機能を紹介し、その後のフォローアップも行います。

おすすめ

転載: blog.csdn.net/m0_69984273/article/details/131844136