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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎関数の呼び出し: 引数・返却値・戻り番地をどの様に渡したり返したりするかはアーキテクチャごとに異なり、ABI(application binary interface)で定められています。
タグ: 2017年版ソースエディター
58 行
<syntaxhighlight lang="C">
//例 上の例の関数を呼び出す
int functionmyFunc(int a, int b)
{
return a + b;
65 行
int main(void){
int r;
r = functionmyFunc(1, 2);//rには1と2との和である3が代入されます。
}
</syntaxhighlight>
97 行
 
----
この例では、functionmyFunc関数の実引数である1,2が、functionmyFunc関数の仮引数であるa,bにコピーされ、a+bがfunctionmyFunc関数の返却値として返され、その値がrに代入されます。
 
関数を呼び出すとき、
引数と制御がるべきアドレスり番地(リターンアドレス)がスタックと呼ばれる領域に格納されます<ref>ARMアーキテクチャの様にリンクレジスタに戻り番地を記憶するアーキテクチャもあります。</ref>
また、返却値がレジスタや予めばれるび出し側の関数が用意した領域に格納されます<ref>矢沢久雄、原田英生『日経 BP パソコンベストムック C言語とC++がわか引数・返却値・戻り番地をどの様に渡したり返したりす本』日経ソフトウェかはーキテクチャごとに異なり2013年5月15日発行、096項ABI(application binary interface)で定められています。</ref>
 
 
 
== 引数と返却値 ==