関数を定義内でネストできますが、ネストされた呼び出し内ではできませんか?
間違っています。関数はネストした呼び出しにすることができますが、ネストして定義することはできません。 C 言語では、すべての関数は並列です。つまり、関数を定義するときに関数は互いに独立しています。ある関数は別の関数に従属することはありません。つまり、定義内で関数をネストすることはできませんが、相互に呼び出すことはできますが、それらは互いに独立しています。 main 関数を呼び出すことができません。
このチュートリアルの動作環境: Windows 7 システム、C99 バージョン、Dell G3 コンピューター。
間違っています。関数はネストした呼び出しにすることができますが、ネストして定義することはできません。
C 言語関数
関数とは、特定の関数を独立して完了するために再利用できるコードの一部です。ユーザーによって渡されたデータを受信するかどうか。ユーザーデータを受け取る関数は定義時にパラメーターを指定する必要がありますが、ユーザーデータを受け取らない関数は指定する必要はありません。これに基づいて、関数はパラメーター付き関数とパラメーターなし関数に分類できます。
コードセグメントを関数にカプセル化するプロセスは、関数定義と呼ばれます。
関数の定義
関数がユーザーから渡されたデータを受け取らない場合は、パラメーターなしで関数を定義できます。以下に示すように:
dataType functionName(){ //body }
関数がユーザーから渡されたデータを受信する必要がある場合は、パラメーターを使用して定義する必要があります。以下に示すように:
dataType functionName( dataType1 param1, dataType2 param2 ... ){ //body }
dataType
は戻り値の型で、int、float、char などの C 言語の任意のデータ型を指定できます。functionName
は識別子の一種である関数名で、命名規則は識別子と同じです。関数名の後の括弧 ( ) は省略できません。dataType1 param1、dataType2 param2...
はパラメータのリストです。関数には、パラメーターを 1 つだけ指定することも、複数のパラメーターを で区切って指定することもできます。パラメータは本質的に変数であり、定義時に型と名前を指定する必要があります。パラメーターなし関数の定義と比較すると、パラメーター化関数の定義にはパラメーター リストが 1 つだけあります。body
は関数本体です。これは、関数が実行する必要があるコードであり、関数の主要部分です。文が 1 つだけの場合でも、関数本体は { } で囲む必要があります。戻り値がある場合は、関数本体の return ステートメントを使用してそれを返します。返されるデータのタイプは dataType と同じである必要があります。
return は C 言語のキーワードで、処理結果を返す関数内でのみ使用できます。
例:
#include <stdio.h> int sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum; } int main(){ int a = sum(); printf("The sum is %d\n", a); return 0; }
実行結果:
The sum is 5050
関数は定義をネストできません、main も関数定義なので、sum は main の外側に配置する必要があります。関数は最初に定義してから使用する必要があるため、sum は main の前に配置する必要があります。
注: main は関数定義であり、関数呼び出しではありません。実行可能ファイルがメモリにロードされると、システムは main 関数から実行を開始します。つまり、システムは定義した main 関数を呼び出します。
チュートリアルの推奨事項: 「c 言語チュートリアル ビデオ 」
関数呼び出し
いわゆる関数呼び出し(関数呼び出し)、つまり、すでに定義されている関数を使用します。関数呼び出しの一般的な形式は次のとおりです。
functionName(param1, param2, param3 ...);
functionName は関数名、param1、param2、param3... は実際のパラメータ リストです。実際のパラメータには、定数、変数、式などを使用できます。複数の実パラメータはカンマで区切られます。
C 言語では、関数を呼び出すさまざまな方法があります。たとえば、次のとおりです。
//函数作为表达式中的一项出现在表达式中 z = max(x, y); m = n + max(x, y); //函数作为一个单独的语句 printf("%d", a); scanf("%d", &b); //函数作为调用另一个函数时的实参 printf( "%d", max(x, y) ); total( max(x, y), min(m, n) );
関数のネストされた呼び出し
関数をネストした定義にすることはできません。ただし、呼び出しは入れ子にすることができます。つまり、1 つの関数の定義または呼び出し中に、別の関数への呼び出しが許可されます。
[例] Calculate sum = 1! 2! 3! ... (n-1)! n!
分析: 階乗計算用と階乗計算用の 2 つの関数を作成できます。累積和を計算するために使用されます。
#include <stdio.h> //求阶乘 long factorial(int n){ int i; long result=1; for(i=1; i<=n; i++){ result *= i; } return result; } // 求累加的和 long sum(long n){ int i; long result = 0; for(i=1; i<=n; i++){ //在定义过程中出现嵌套调用 result += factorial(i); } return result; } int main(){ printf("1!+2!+...+9!+10! = %ld\n", sum(10)); //在调用过程中出现嵌套调用 return 0; }
操作結果:
1!+2!+...+9!+10! = 4037913
factorial() の呼び出しは sum() の定義に現れ、sum() の呼び出しは printf() の呼び出し中に現れ、printf ( ) は main() によっても呼び出され、それらの全体的な呼び出し関係は次のとおりです:
main() --> printf() --> sum() --> factorial()
関数 A() が定義または呼び出しプロセス中に別の関数 B() を呼び出す場合、それを A() と呼びます。呼び出し関数またはメイン関数、B() は呼び出される関数と呼ばれます。
呼び出し側関数が呼び出された関数に遭遇すると、呼び出し側関数は一時停止し、CPU は呼び出された関数のコードを実行し、呼び出された関数の実行が完了すると、呼び出し側関数に戻ります。実行を続けます。
C 言語プログラムの実行プロセスは、単純または複雑な呼び出しチェーンを形成する複数の関数間の相互呼び出しプロセスと考えることができます。このチェーンの開始点は main() であり、終了点も main() です。 main() がすべての関数の呼び出しを完了すると、値 (return 0; など) を返し、自身の寿命を終了し、それによってプログラム全体が終了します。
関数は再利用できるコード ブロックです。CPU はコードを 1 つずつ実行します。関数呼び出しに遭遇すると、CPU はまず現在のコード ブロック内の次のコードのアドレスを記録する必要があります (アドレスがは 0X1000)、別のコード ブロックにジャンプし、実行完了後に戻って 0X1000 でコードの実行を継続します。このプロセス全体は、CPU が休憩し、別の作業を行うために手元の作業を一時的に中断し、終了後に前の作業を続行することに相当します。
コンピュータ プログラミングの詳細については、プログラミング ビデオをご覧ください。 !
以上が関数を定義内でネストできますが、ネストされた呼び出し内ではできませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go 言語は、クロージャとリフレクションという 2 つの動的関数作成テクノロジを提供します。クロージャを使用すると、クロージャ スコープ内の変数にアクセスでき、リフレクションでは FuncOf 関数を使用して新しい関数を作成できます。これらのテクノロジーは、HTTP ルーターのカスタマイズ、高度にカスタマイズ可能なシステムの実装、プラグイン可能なコンポーネントの構築に役立ちます。

C++ 関数の名前付けでは、読みやすさを向上させ、エラーを減らし、リファクタリングを容易にするために、パラメーターの順序を考慮することが重要です。一般的なパラメータの順序規則には、アクション-オブジェクト、オブジェクト-アクション、意味論的な意味、および標準ライブラリへの準拠が含まれます。最適な順序は、関数の目的、パラメーターの種類、潜在的な混乱、および言語規約によって異なります。

効率的で保守しやすい Java 関数を作成するための鍵は、シンプルに保つことです。意味のある名前を付けてください。特殊な状況に対処します。適切な可視性を使用してください。

1. SUM 関数は、列またはセルのグループ内の数値を合計するために使用されます (例: =SUM(A1:J10))。 2. AVERAGE 関数は、列またはセルのグループ内の数値の平均を計算するために使用されます (例: =AVERAGE(A1:A10))。 3. COUNT 関数。列またはセルのグループ内の数値またはテキストの数をカウントするために使用されます。例: =COUNT(A1:A10)。 4. IF 関数。指定された条件に基づいて論理的な判断を行い、結果を返すために使用されます。対応する結果。

C++ 関数のデフォルト パラメーターの利点には、呼び出しの簡素化、可読性の向上、エラーの回避などがあります。欠点は、柔軟性が限られていることと、名前の制限があることです。可変引数パラメーターの利点には、無制限の柔軟性と動的バインディングが含まれます。欠点としては、複雑さの増大、暗黙的な型変換、デバッグの難しさなどが挙げられます。

C++ で参照型を返す関数の利点は次のとおりです。 パフォーマンスの向上: 参照による受け渡しによりオブジェクトのコピーが回避され、メモリと時間が節約されます。直接変更: 呼び出し元は、返された参照オブジェクトを再割り当てせずに直接変更できます。コードの簡素化: 参照渡しによりコードが簡素化され、追加の代入操作は必要ありません。

カスタム PHP 関数と定義済み関数の違いは次のとおりです。 スコープ: カスタム関数はその定義のスコープに限定されますが、事前定義関数はスクリプト全体からアクセスできます。定義方法: カスタム関数は function キーワードを使用して定義されますが、事前定義関数は PHP カーネルによって定義されます。パラメータの受け渡し: カスタム関数はパラメータを受け取りますが、事前定義された関数はパラメータを必要としない場合があります。拡張性: カスタム関数は必要に応じて作成できますが、事前定義された関数は組み込みで変更できません。

C++ の例外処理は、特定のエラー メッセージ、コンテキスト情報を提供し、エラーの種類に基づいてカスタム アクションを実行するカスタム例外クラスを通じて強化できます。 std::Exception から継承した例外クラスを定義して、特定のエラー情報を提供します。カスタム例外をスローするには、throw キーワードを使用します。 try-catch ブロックでdynamic_castを使用して、キャッチされた例外をカスタム例外タイプに変換します。実際の場合、open_file 関数は FileNotFoundException 例外をスローします。例外をキャッチして処理すると、より具体的なエラー メッセージが表示されます。