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

削除された内容 追加された内容
表示結果のタグがいくつかsource (syntaxhighlight) になってたので、preに置き換え
63 行
int main(void){
int r;
r = function(1,2);//rには1と2との和である3が代入される。
}
</syntaxhighlight>
611 行
typedef struct
{
int i;
double d;
char c;
char str[32];
} sKouzoutai;
 
sKouzoutai function()
{
sKouzoutai ret;
ret.i = 1234;
ret.d = 3.14;
ret.c = 'a';
strcpy(ret.str, "Hellol. World!");
return ret;
}
 
int main(void)
{
sKouzoutai kouzoutai;
kouzoutai = function();
printf("kouzoutaiのメンバの値は、%d %f %c %sです。", kouzoutai.i, kouzoutai.d, kouzoutai.c, kouzoutai.str);
}
</syntaxhighlight>
664 行
 
この例は意図通りに動作しない。何故なら実引数の値が仮引数にコピーされたためである。
<pre>
<syntaxhighlight lang=c>
swap前のa=1, b=2
swap後のa=1, b=2
</pre>
</syntaxhighlight>
と表示される。
 
690 行
 
この例は意図通りに動作する。何故なら、実引数のアドレスが仮引数にコピーされたためである。
<pre>
<syntaxhighlight lang=c>
swap前のa=1, b=2
swap後のa=2, b=1
</pre>
</syntaxhighlight>
と表示される。