ページ 11

自作関数について・・・

Posted: 2017年7月25日(火) 23:06
by 初見さん
#include<stdio.h>
int max2(int a,int b)
{
int max;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}

int main(void)
{
int n1,n2;
n1=30;
n2=34;
printf("%d",max2(n1,n2));
return 0;
}

テキストをもとにこのプログラムを書いたんですけど、n1とaを対応させて、
n2とbをそれぞれ対応させているようなのですが、有効範囲的にn1の部分をa、n2をbにして、
aをa、bをbのように対応させてもプログラムに支障はないですよね?

Re: 自作関数について・・・

Posted: 2017年7月26日(水) 00:52
by box
こんな風にしたい、ってことですか?

コード:

#include <stdio.h>

int max2(int a, int b)
{
    int max;

    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    return max;
}

int main(void)
{
    int a, b;

    a = 30;
    b = 34;
    printf("%d", max2(a, b));
    return 0;
}
だったら、全然問題ありません。
ちなみに、「有効範囲的に」という意味では、上記コードで、main関数におけるa, bとmax2関数におけるa, bとは
全く別物です。
main関数からmax2関数に渡した変数a, bを、「たまたま」max2関数でも同じ変数名a, bで扱っているだけです。
こんがらがることを承知の上で出しておくと、こんなことだって出来ます。

コード:

#include <stdio.h>

int max2(int b, int a)
{
    int max;

    if (b > a) {
        max = b;
    } else {
        max = a;
    }
    return max;
}

int main(void)
{
    int a, b;

    a = 30;
    b = 34;
    printf("%d", max2(a, b));
    return 0;
}

Re: 自作関数について・・・

Posted: 2017年7月26日(水) 02:49
by 初見さん
例を交えた解説、非常にわかりやすかったです。