関数への引数は引数の値のコピーとして渡されるから、呼ばれた関数側で呼出側の実引数の値を変えることは出来ない。
参照による呼び出しを行いたいときはポインターをそのまま渡し、渡された(関数)側でそのポインターの指すデータを変える。
なお、配列の名前が引数として渡される場合は、実際には配列の起点の位置(先頭アドレス)が渡される。そこで、関数側ではこの値に添え字をつけて、配列要素にアクセスしたり、変更したりする。
#define MAXLine 1000
main()
{
char line[MAXLINE];
…
while((len = getline(line, MAXLINE)) > 0 )
…
}
getline(s, lim)
char s[]; /* 配列sの長さはmainで決定されているのでgetline側では指定しない。 */
int lim;
{
…
s[i] = c;
…
}
関数の引数は局所変数(実際にはスタックにとられている)であり、その形が分かるように宣言が必要で、関数名の次の行、引数並びと最初の左{の間で行い、後ろにセミコロンをつける。
power(x, n)
int x, n;
{
……
return( p );
}
関数は値をmainに返す必要は無いが、return文で式を記述し処理結果を返すことが出来る。