関数のパラメータ
関数呼び出し、パラメータの数と型は、関数プロトタイプと一致する必要があります。
引数に関わる形
関数呼び出し、伝送パラメータは、引数と呼ばれ、関数定義、パラメータリストで宣言されたパラメータは、パラメータと呼ばれます。
関数呼び出しの際、転送処理の引数は、実際には、なります複製、したがって、与えられたパラメータを内部関数のパラメータの値を変更し、それがパラメータに渡され、呼び出し元には影響しません。
void FakeChangeValue(int x)
{
x += 5;
printf("函数内部改变数值后:%d\r\n", x);
}
void main(void)
{
int nValue = 100;
printf("nValue: %d\r\n", nValue);
FakeChangeValue(nValue);
printf("nValue: %d\r\n", nValue);
}
別の例として、以下の関数、および2つの変数の値を交換する方法はありません。
void FakeSwap(int x, int y)
{
int nTemp = y;
y = x;
x = nTemp;
}
関数の戻り値
この関数は、戻りを使用してreturn文のリターンを使用する2つの側面の意味合いがあります。
- 床に呼び出し元に、現在の関数の実行およびリターンの終わり
- 呼び出し元に対応する戻り値
#include <stdio.h>
int AddTwoNumber(int x, int y)
{
printf("返回之前的语句\r\n");
return x + y;
printf("返回之后的语句\r\n");
}
void main(void)
{
int nValue = 0;
nValue = AddTwoNumber(10, 20);
printf("%d\r\n", nValue);
}
戻り値の復帰後は、戻り値の型がvoidの関数プロトタイプと一致している必要があり、あなたは戻り値なしで返すことだけ必要があります。
#include <stdio.h>
void VoidFun()
{
printf("返回之前的语句\r\n");
return;
printf("返回之后的语句\r\n");
}
void main(void)
{
VoidFun();
}
可変個引数関数
宣言し、機能を実装し、パラメータリストが表示されます
...
それは、引数で渡されたパラメータの数が制限されていません表します。
実際には、我々はprintf関数を使用することはこれです:
C標準ライブラリ、va_listの、va_startマクロマクロ等では、関連するパラメータおよびマクロ機能、計算およびパラメータの可変数を変えることによって、次の例を参照してください。
#include <stdio.h>
#include <stdarg.h>
int Sum(int nFirst, ...)
{
int nSum = 0, i = nFirst;
va_list marker;
va_start(marker, nFirst);
while (i != -1)
{
nSum += i;
i = va_arg(marker, int);
}
va_end(marker);
return nSum;
}
void main(void)
{
printf("求和: %d\n", Sum(2, 3, 4, -1));
printf("求和: %d\n", Sum(5, 7, 9, 11, -1));
printf("求和: %d\n", Sum(-1));
}
va_シリーズマクロノウハウを使用します。
- 少なくともパラメータが存在する必要があります
- パラメータの初期化を使用してのva_startと
- 引数に勝つのva_arg使用
- va_end初期化解除を使用し
- 慣例ならびにエンドフラグパラメータを使用して、発信者、または事前に渡された引数の数のいずれか