logo

C関数

c では、大きなプログラムを関数と呼ばれる基本的な構成要素に分割できます。関数には、{} で囲まれた一連のプログラミング ステートメントが含まれます。関数を複数回呼び出すことで、C プログラムに再利用性とモジュール性を提供できます。つまり、関数の集合体がプログラムを構成していると言えます。この関数は次のようにも知られています 手順 または サブルーチン 他のプログラミング言語でも。

C の関数の利点

C関数には以下のようなメリットがあります。

  • 関数を使用すると、プログラム内で同じロジック/コードを何度も書き直す必要がなくなります。
  • C 関数は、プログラム内で、またプログラム内のどこからでも、何度でも呼び出すことができます。
  • 大規模な C プログラムを複数の関数に分割すると、簡単に追跡できます。
  • 再利用性は C 関数の主な成果です。
  • ただし、C プログラムでは関数呼び出しは常にオーバーヘッドになります。

機能面

C 関数には 3 つの側面があります。

    関数宣言関数は、関数名、関数パラメータ、戻り値の型をコンパイラに伝えるために、C プログラム内でグローバルに宣言する必要があります。
    関数呼び出し関数はプログラム内のどこからでも呼び出すことができます。パラメータ リストは、関数呼び出しと関数宣言で異なっていてはなりません。関数宣言で宣言されているのと同じ数の関数を渡す必要があります。関数の定義これには、実行される実際のステートメントが含まれます。これは、関数が呼び出されたときにコントロールが渡される最も重要な側面です。ここで、関数から返せる値は 1 つだけであることに注意する必要があります。
SNC 関数の側面構文
1関数宣言return_type 関数名 (引数リスト);
2関数呼び出し関数名 (引数リスト)
3関数の定義return_type 関数名 (引数リスト) {関数本体;}

C言語で関数を作成する構文は次のとおりです。

 return_type function_name(data_type parameter...){ //code to be executed } 

関数の種類

C プログラミングには 2 種類の関数があります。

    ライブラリ関数:scanf()、printf()、gets()、puts()、ceil()、floor() などの C ヘッダー ファイルで宣言されている関数です。ユーザー定義関数:C プログラマが何度も使えるように作成した関数です。これにより、大規模なプログラムの複雑さが軽減され、コードが最適化されます。
C関数

戻り値

C 関数は、関数から値を返す場合と返さない場合があります。関数から値を返す必要がない場合は、戻り値の型として void を使用します。

関数から値を返さない C 関数の簡単な例を見てみましょう。

戻り値のない例:

 void hello(){ printf('hello c'); } 

関数から何らかの値を返したい場合は、int、long、char などのデータ型を使用する必要があります。戻り値の型は、関数から返される値によって異なります。

ハドゥープのチュートリアル

関数から int 値を返す C 関数の簡単な例を見てみましょう。

戻り値の例:

 int get(){ return 10; } 

上記の例では、値として 10 を返す必要があるため、戻り値の型は int になります。浮動小数点値 (10.2、3.1、54.5 など) を返したい場合は、メソッドの戻り値の型として float を使用する必要があります。

 float get(){ return 10.2; } 

ここで、関数を呼び出して関数の値を取得する必要があります。

関数呼び出しのさまざまな側面

関数は引数を受け入れる場合と受け入れない場合があります。値を返す場合もあれば、返さない場合もあります。これらの事実に基づいて、関数呼び出しには 4 つの異なる側面があります。

  • 引数も戻り値も持たない関数
  • 引数なしで戻り値のある関数
  • 引数あり、戻り値なしの関数
  • 引数と戻り値を持つ関数

引数と戻り値のない関数の例

例1

 #include void printName(); void main () { printf('Hello '); printName(); } void printName() { printf('Javatpoint'); } 

出力

 Hello Javatpoint 

例 2

 #include void sum(); void main() { printf('
Going to calculate the sum of two numbers:'); sum(); } void sum() { int a,b; printf('
Enter two numbers'); scanf('%d %d',&a,&b); printf('The sum is %d',a+b); } 

出力

 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

引数なし、戻り値ありの関数の例

例1

 #include int sum(); void main() { int result; printf('
Going to calculate the sum of two numbers:'); result = sum(); printf('%d',result); } int sum() { int a,b; printf('
Enter two numbers'); scanf('%d %d',&a,&b); return a+b; } 

出力

whileループJava
 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

例 2: 正方形の面積を計算するプログラム

10/50.00
 #include int sum(); void main() { printf('Going to calculate the area of the square
'); float area = square(); printf('The area of the square: %f
',area); } int square() { float side; printf('Enter the length of the side in meters: '); scanf('%f',&side); return side * side; } 

出力

 Going to calculate the area of the square Enter the length of the side in meters: 10 The area of the square: 100.000000 

引数あり、戻り値なしの関数の例

例1

 #include void sum(int, int); void main() { int a,b,result; printf('
Going to calculate the sum of two numbers:'); printf('
Enter two numbers:'); scanf('%d %d',&a,&b); sum(a,b); } void sum(int a, int b) { printf('
The sum is %d',a+b); } 

出力

 Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34 

例 2: 5 つの数値の平均を計算するプログラム。

 #include void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf('
Going to calculate the average of five numbers:'); printf('
Enter five numbers:'); scanf('%d %d %d %d %d',&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf('The average of given five numbers : %f',avg); } 

出力

 Going to calculate the average of five numbers: Enter five numbers:10 20 30 40 50 The average of given five numbers : 30.000000 

引数と戻り値を持つ関数の例

例1

 #include int sum(int, int); void main() { int a,b,result; printf('
Going to calculate the sum of two numbers:'); printf('
Enter two numbers:'); scanf('%d %d',&a,&b); result = sum(a,b); printf('
The sum is : %d',result); } int sum(int a, int b) { return a+b; } 

出力

 Going to calculate the sum of two numbers: Enter two numbers:10 20 The sum is : 30 

例 2: 数値が偶数か奇数かをチェックするプログラム

 #include int even_odd(int); void main() { int n,flag=0; printf('
Going to check whether a number is even or odd'); printf('
Enter the number: '); scanf('%d',&n); flag = even_odd(n); if(flag == 0) { printf('
The number is odd'); } else { printf('
The number is even'); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } } 

出力

 Going to check whether a number is even or odd Enter the number: 100 The number is even 

C ライブラリ関数

ライブラリ関数は、グループ化され、ライブラリと呼ばれる共通の場所に配置される C の組み込み関数です。このような関数は、特定の操作を実行するために使用されます。たとえば、printf は、コンソールで印刷するために使用されるライブラリ関数です。ライブラリ関数はコンパイラの設計者によって作成されます。すべての C 標準ライブラリ関数は、次の拡張子で保存されたさまざまなヘッダー ファイル内で定義されます。 .h 。このようなヘッダー ファイルで定義されているライブラリ関数を利用するには、これらのヘッダー ファイルをプログラムに組み込む必要があります。たとえば、printf/scanf などのライブラリ関数を使用するには、標準入出力に関するすべてのライブラリ関数を含むヘッダー ファイルである stdio.h をプログラムに含める必要があります。

主に使用されるヘッダー ファイルのリストを次の表に示します。

SNヘッダファイル説明
1stdio.hこれは標準の入出力ヘッダー ファイルです。標準入出力に関するすべてのライブラリ関数が含まれています。
2コニウム.hこれはコンソールの入出力ヘッダー ファイルです。
3string.hこれには、gets()、puts() などの文字列関連のライブラリ関数がすべて含まれています。
4stdlib.hこのヘッダー ファイルには、malloc()、calloc()、exit() などのすべての一般的なライブラリ関数が含まれています。
5math.hこのヘッダー ファイルには、sqrt()、pow() などの関数に関連するすべての数学演算が含まれています。
6時間.hこのヘッダー ファイルには、時間関連の関数がすべて含まれています。
7ctype.hこのヘッダー ファイルには、すべての文字処理関数が含まれています。
8stdarg.h可変引数関数はこのヘッダー ファイルで定義されます。
9シグナル.hすべての信号処理関数は、このヘッダー ファイルで定義されます。
10setjmp.hこのファイルにはすべてのジャンプ関数が含まれています。
十一ロケール.hこのファイルにはロケール関数が含まれています。
12エラー番号.hこのファイルにはエラー処理関数が含まれています。
13アサート.hこのファイルには診断機能が含まれています。

C 関数に関する追加の詳細を以下に示します。

C 関数に関連する追加情報がいくつかあります。その一部は次のとおりです。

モジュール式プログラミング: 能力 分ける ある 巨大なプログラム より小さく、より管理しやすいモジュールに分割できることは、C の関数を利用する主な利点の 1 つです。各関数には特定のジョブまたは機能コンポーネントが含まれる場合があり、これによりプログラム全体の構造が合理化され、明確になります。このモジュール化戦略により、コードの再利用が向上し、メンテナンスとデバッグが容易になります。

アメリカには都市がいくつありますか

コードの再利用: 関数を使用すると、特定のアルゴリズムまたはロジックを 1 回だけ作成し、プログラム全体で繰り返し使用できます。コードを実行する必要があるときはいつでも関数を呼び出すことができるため、コードを別の場所に複製する必要がなくなります。それだけではありません 開発をスピードアップします 同時に一貫性を確保し、間違いを犯す可能性を減らします。

カプセル化と抽象化: 機能の実装の詳細を曖昧にすることにより、関数はあるレベルの抽象化を提供します。関数プロトタイプのインターフェイスは次のように定義できます。 ヘッダーファイル ですが、実際の実装は別のソース ファイルで提供できます。プログラムの他の部分は、インターフェイスと実装が分離されているため、関数が内部でどのように実装されているかを理解する必要なく、関数を利用できます。

プログラムのメンテナンスが簡単: プログラムをより小さな機能に分割すると、プログラムの理解と保守がより容易になります。各関数に特定の責任を割り当てる機能により、コードが読みやすくなり、トラブルシューティングとデバッグが容易になります。エラーが見つかった場合や修正が必要な場合は、プログラムの他の部分に影響を与えることなく、必要な機能に集中できます。

コラボレーションの向上: 関数を使用すると、同じプロジェクトに取り組んでいる開発者が共同作業できるようになります。プログラムは複数の機能に分割され、複数のチームメンバーが作業できるようになります。 さまざまな機能 すぐに。インターフェイスが明確に指定されていれば、開発者は自分の作業を機能にスムーズに統合でき、生産性が向上し、効果的な開発が促進されます。

パラメータを渡す: C の関数に引数やデータを送信して、それらを処理できるようにすることができます。この関数は、これらの入力を使用してアクションを実行し、結果を生成できます。パラメーターを渡すことで関数の柔軟性と適応性を高めることができ、プログラム全体の汎用性が高まります。

戻り値: 関数は、それを呼び出したコードに値を送り返すことができ、関数の実行結果の通信が可能になります。関数内で計算やデータ操作を行った後、戻り値をプログラムの他の領域で利用できます。 戻り値 は、関数の出力に応じて結果を計算したり、条件を確立したりする必要がある場合に特に役立ちます。

結論:

結論として、関数はプログラムを提供するため、C プログラミングには不可欠です。 組織化、再利用性、モジュール性 。開発者は、巨大なプログラムをより小さな関数に分割することで、同じコードを繰り返し作成することを避け、コードをより効率的かつ保守しやすくすることができます。プログラム内のどこでも関数を呼び出すことができるため、柔軟性が提供され、制御フローが向上します。

宣言、呼び出し 、 そして 意味 機能の多くは、その多くの特徴のうちのほんの一部にすぎません。コンパイラは、次の関数宣言によって通知されます。 名前、引数 、 そして 戻り値の型 。関数の有無に関係なく関数を呼び出すことができます。 パラメーター そして、有無にかかわらず 戻り値 。プログラマはコードの可読性と最適化を向上させるためにユーザー定義関数を構築しますが、C ライブラリ関数は次のようになります。 printf() そして scanf() プリセット機能を提供します。

全体として、関数は C プログラミングにおける重要な構成要素であり、組織化の強化、コードの再利用、巨大なプログラムの簡単な追跡などの利点をもたらします。関数呼び出しによりオーバーヘッドが追加される可能性がありますが、その利点は最小限のパフォーマンスへの影響を上回ります。プログラマは、関数を理解して使用することで、効果的なモジュール式の C プログラムを作成できます。