「C言語/関数」の版間の差分

削除された内容 追加された内容
codeタグを間違えて表示がバグったので、修正。
関数の簡単な例のコードを、冒頭に移動。
49 行
 
のように関数を記述する場合もある。
 
 
=== 関数の呼び出し ===
定義した関数を呼び出す際の記述は、たとえば次のように行う。
 
<source lang=c>
//例 上の例の関数を呼び出す
int function(int a, int b)
{
return a+b;
}
 
int main(void){
int r;
r=function(1,2);//rには1と2との和である3が代入される。
}
</source>
 
 
 
関数の定義側で書かれた引数のことを'''仮引数'''(かりひきすう、parameter)という。
 
いっぽう、関数の呼び出し側で書かれた引数のことを'''実引数'''(じつひきすう)という。
 
----
複数の仮引数を持つ場合、「,(コンマ)」で区切る。仮引数を持たない場合、何も書かない。
 
仮引数の記述は次のようになっている。
<source lang=c>
仮引数のデータ型 仮引数名
</source>
 
 
----
任意個数の実引数について、実引数を持たない場合、何も書かない。
複数の実引数を持つ場合、「,(コンマ)」で区切る。
 
実引数の記述は次のようになっている。
<source lang=c>
関数名(任意個数の実引数);
</source>
 
----
また、関数の呼び出し先から呼び出し元へ情報を渡すこともでき、この情報を返却値と呼ぶ。
返却値のデータ型で返却値の有無や種類を決定する。
任意個数の仮引数で仮引数の数や種類を決定する。
 
----
この例では、function関数の実引数である1,2が、
function関数の仮引数であるa,bにコピーされ、
a+bがfunction関数の返却値として返され、
その値がrに代入される。
 
関数を呼び出すとき、
引数と制御が戻るべきアドレス(リターンアドレス)がスタックと呼ばれる領域に格納される。
また、返却値がレジスタと呼ばれる領域に格納される。<ref>矢沢久雄、原田英生『日経 BP パソコンベストムック C言語とC++がわかる本』日経ソフトウェア、2013年5月15日発行、096項</ref>
 
 
276 ⟶ 332行目:
また、入門書で、ポインタの章と関数の章が別々に書かれていることが多いのは、初心者のための配慮(はいりょ)なのであり、じつは、現実では、ポインタと関数を別々に考えるのは、あまり実用的ではないだろう。
 
 
 
=== 関数の呼び出し ===
定義した関数を呼び出す際の記述は、たとえば次のように行う。
 
<source lang=c>
//例 上の例の関数を呼び出す
int function(int a, int b)
{
return a+b;
}
 
int main(void){
int r;
r=function(1,2);//rには1と2との和である3が代入される。
}
</source>
 
 
 
関数の定義側で書かれた引数のことを'''仮引数'''(かりひきすう、parameter)という。
 
いっぽう、関数の呼び出し側で書かれた引数のことを'''実引数'''(じつひきすう)という。
 
----
複数の仮引数を持つ場合、「,(コンマ)」で区切る。仮引数を持たない場合、何も書かない。
 
仮引数の記述は次のようになっている。
<source lang=c>
仮引数のデータ型 仮引数名
</source>
 
 
----
任意個数の実引数について、実引数を持たない場合、何も書かない。
複数の実引数を持つ場合、「,(コンマ)」で区切る。
 
実引数の記述は次のようになっている。
<source lang=c>
関数名(任意個数の実引数);
</source>
 
----
また、関数の呼び出し先から呼び出し元へ情報を渡すこともでき、この情報を返却値と呼ぶ。
返却値のデータ型で返却値の有無や種類を決定する。
任意個数の仮引数で仮引数の数や種類を決定する。
 
----
この例では、function関数の実引数である1,2が、
function関数の仮引数であるa,bにコピーされ、
a+bがfunction関数の返却値として返され、
その値がrに代入される。
 
関数を呼び出すとき、
引数と制御が戻るべきアドレス(リターンアドレス)がスタックと呼ばれる領域に格納される。
また、返却値がレジスタと呼ばれる領域に格納される。<ref>矢沢久雄、原田英生『日経 BP パソコンベストムック C言語とC++がわかる本』日経ソフトウェア、2013年5月15日発行、096項</ref>