引数を二重に定義するような書き方は問題ないのでしょうか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 引数を二重に定義するような書き方は問題ないのでしょうか?

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#6

by Dixq (管理人) » 11ヶ月前

実現したいことがよくわかりませんが、関数のオーバーロードとは別ですか?
以下のように同じ関数名で引数の異なる定義を沢山作ることはできます。

コード:

#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
}

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#5

by シャドウ » 11ヶ月前

2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#4

by シャドウ » 11ヶ月前

2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#3

by 初めての書き込みです。 » 11ヶ月前

すみません、質問の意味がよくわからないです。。

コード:

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: 引数を二重に定義するような書き方は問題ないのでしょうか?

#2

by box » 11ヶ月前

コード:

void substitution(int answer,int number_x,int number_y){
	substitution(1,1);
とりあえずこのコードでは関数定義時の引数の数(3個)と
呼出し時の引数(2個)が食い違っているので
コンパイルエラーが出る、とだけ申しておきましょう。

引数を二重に定義するような書き方は問題ないのでしょうか?

#1

by ポータル241 » 11ヶ月前

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);
}

ページトップ