ホームページ >バックエンド開発 >C#.Net チュートリアル >C言語で関数を呼び出す3つの方法は何ですか?
C 言語で関数を呼び出すには、次の 3 つの方法があります: 1. 値による呼び出し (変数の値を関数の仮パラメータに渡すこと)、2. 参照による呼び出し (つまり、関数の仮パラメータに渡すこと)変数のアドレスを関数に直接渡す ; 3. アドレスによる呼び出しはポインターを通じて実装され、変数の参照を関数に渡します。
#この記事の動作環境: Windows 7 システム、バージョン C11、Dell G3 コンピューター。
C 言語で関数を呼び出すには、値による呼び出し、参照による呼び出し、アドレスによる呼び出しの 3 つの方法があります。
1. 値による呼び出し
値による呼び出しとは、変数の値を関数の仮パラメータに渡すことです。実際には、変数の値を使用して新しい仮パラメータを生成すると、その値は仮パラメータの操作後に返されます。
関数内で変更された値は外部に影響を与えることはできないため、関数内の仮パラメータを変更しても、関数外の変数の値には影響しません。
コード例を通して理解しましょう:
#include<stdio.h> void myswap(int x, int y) { int t; t=x; x=y; y=t; } int main() { int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(a,b); //作为对比,直接交换两个整数,显然不行 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; }
実行:
#[ビデオ チュートリアルの推奨: C 言語チュートリアル]
分析:
インタラクションが成功しない理由は、値による呼び出しを使用すると、実際のパラメータではなく、仮パラメータの値のみが変更されるためです。
2. アドレスによる呼び出し
アドレスによる呼び出しとは、関数に変数のアドレスを直接渡すことで、変数のアドレスを代入します。ポインタが指すアドレスの内容への変更は関数の外部に反映される可能性があるため、ポインタが実変数のアドレスを指すように、関数内の仮パラメータへのポインタを与えます。関数外の変数の値は変更可能です。
コード例を通して理解しましょう:
#include<stdio.h> void myswap(int *p1, int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } int main() { int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(&a,&b); //交换两个整数的地址 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; }
実行:
分析:
インタラクションが成功する理由はい: アドレスによる呼び出しを使用すると、元のアドレスがポインタを使用して変更されるため、実際のパラメータが交換されます。
3. 参照呼び出し
#参照呼び出しは、実際にはポインターを通じて実装され、変数の参照は関数に渡されます。アドレスに到達可能 呼び出しの効果ですが、値による呼び出しと同様に使用すると、関数はその値を変更できます。
コード例を通して理解しましょう:
#include<stdio.h> void myswap(int &x, int &y) { int t; t=x; x=y; y=t; } int main() { int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(a,b); //注意:这里调用方式与传值调用一样,直接以变量a和b作为实参交换 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; }
実行:
分析:
インタラクションが成功する理由Yes: 参照による呼び出し 参照は 2 つの実パラメータ変数 a と b の値を直接変更するため、それらは交換されます。
以上がC言語で関数を呼び出す3つの方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。