ページ 1 / 1
引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月05日(日) 15:16
by ポータル241
C言語を勉強し始めて疑問に思った点を質問させてもらいます。
このようなsubstitutionでadditionの引数を二重に定義するような書き方は大丈夫なのでしょうか?
今回は1つのパターンしかないため、プログラムに意味を成していませんが、仮にsubstitution関数を複数回使い、answer2,answer3...などとパターンがある場合は使い道があるかと思われます。
初歩的な質問ですいません。なんと表現していいのかが分からず調べてもイマイチなものしか出て来ず納得出来なかったため回答を頂けますとありがたいです。
コード:
int answer = 0;
void addition(int answer,int x,int y){
answer = x + y;
}
void substitution(int answer,int number_x,int number_y){
addition(answer,number_x,number_y);
}
void main(){
substitution(1,1);
printf("a + b = %d",answer);
}
Re: 引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月05日(日) 19:36
by box
コード:
void substitution(int answer,int number_x,int number_y){
substitution(1,1);
とりあえずこのコードでは関数定義時の引数の数(3個)と
呼出し時の引数(2個)が食い違っているので
コンパイルエラーが出る、とだけ申しておきましょう。
Re: 引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月11日(土) 11:38
by 初めての書き込みです。
すみません、質問の意味がよくわからないです。。
コード:
void addition(int answer,int x,int y){
answer = x + y;
}
void substitution(int answer,int number_x,int number_y){
addition(answer,number_x,number_y);
}
substitutionの第一引数とadditionの第一引数が同じ名前を使っているけど、この使用方法で問題ないでしょうか?っていうことでしょうか?
Re: 引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月11日(土) 11:53
by シャドウ
2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。
Re: 引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月11日(土) 11:53
by シャドウ
2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。
Re: 引数を二重に定義するような書き方は問題ないのでしょうか?
Posted: 2018年8月11日(土) 16:47
by Dixq (管理人)
実現したいことがよくわかりませんが、関数のオーバーロードとは別ですか?
以下のように同じ関数名で引数の異なる定義を沢山作ることはできます。
コード:
#include <stdio.h>
void add(int a) {}
void add(int a, int b) {}
void add(double a) {}
void add(double a, double b) {}
int main() {
//hoge
}