C言語のカスタム関数の実現
6747 ワード
カスタム関数の役割:コードの管理が便利で、プログラムを書くときの考え方がはっきりしています. コードは多重化され、同じセグメントのコードは異なる場所で複数回実行することができる.
関数宣言:
使用:値タイプ関数名(タイプ変数名、タイプ変数名、...)を返します.たとえば、 c言語は一般的に関数の機能に基づいて関数名を取り、すべて小文字の単語を使用し、複数の単語の間を下線で区切っています.例えば、add_to_arr. パラメータの個数、タイプは関数の機能によって決定され、呼び出されると呼び出し者によって提供される.関数にパラメータが必要ない場合はvoidを書き、空にしないでください. 戻り値タイプは、関数の結果に基づいて決定され、戻り値が必要でなければvoidが書き込まれる. 関数の定義が呼び出しの前に表示される場合、宣言は省略できます. 関数宣言の場合、パラメータの変数名は省略できます. 戻り値タイプを書かない場合(警告がある場合)、デフォルトはintタイプ戻り値です. 関数の定義:
使用:戻り値タイプ関数名(タイプ変数名、タイプ変数名、...){関数体;return(データ);}例:
関数の呼び出し:
使用:関数(データ1、データ2...);たとえば、は変数に格納され、長期にわたって使用される. は直ちに使用され、演算を表示または参加することができる.
関数間のパラメータの転送(値の転送):呼び出し者は被呼び出し者に伝達され、実パラメトリックから形パラメトリックに伝達される. 異なる関数のネーミング空間は互いに独立しており、関数間の変数名は再名でき、互いに影響しない.同じ関数では、同じ名前の変数は定義できませんが、同じプログラムのグローバル変数名と関数のローカル変数名は同じ名前でかまいませんが、この関数では同じ名前のグローバル変数は参照できません. 関数呼び出し時に、変調された関数はパラメータに新しいメモリ空間を開き、メイン関数の実パラメータはこの空間に値を与え、パラメータは実パラメータのコピーのようなものです.したがって、変調関数では、パラメータ値の変更は実パラメータ値に影響しません.変調関数が終了すると,この空間は回収され,パラメータデータは存在せず,実パラメータは呼び出し前の実パラメータである. 関数間では、値伝達によって変数を共有することはできません.注意:配列が関数のパラメータとして使用されている場合(関数呼び出し時に渡される配列がポインタタイプになり、リファレンスが渡されます)、長さが失われ、パラメータを追加して長さを渡す必要があります.
被呼び出し者は呼び出し者に伝達され、returnを使用してデータを返す. return文を書かなくても戻り値があります. 呼び出し者と呼び出し者は、メモリに戻り値を格納するための空間を約束します.return文の機能の1つは、データをこの空間に格納することです.return文を書かないと、呼び出し元はデフォルト値(不確定)を取得します.
関数宣言:
使用:値タイプ関数名(タイプ変数名、タイプ変数名、...)を返します.たとえば、
int sum(int num1, int num2);
実際には、関数宣言時に変数の名前は重要ではありません.戻り値タイプのみが返され、関数名と変数のタイプはコンパイラが知らなければならないので、変数名は無視できます.次の声明も正しい:int sum(int , int);
注意:使用:戻り値タイプ関数名(タイプ変数名、タイプ変数名、...){関数体;return(データ);}例:
int sum(int a, int b)
{
return a + b;
}
関数の呼び出し:
使用:関数(データ1、データ2...);たとえば、
sum(1, 2);
の戻り値は、関数の実行が完了した後、呼び出し位置に配置され、処理方法:関数間のパラメータの転送(値の転送):
#include
void func(int arr[]) // , int* arr
{
for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
printf("%d
",arr[i]); // , 1
}
int main()
{
int arr[5] = {1,2,3,4,5};
func(arr);
}
#include
int func(void)
{
int arr[20] = {}; // , 1, , 0。
}
int main()
{
int num = 9999;
num = func();
printf("%d
",num);
}