ページ 1 / 1
プロトタイプ関数で宣言した引数の名前の変更について
Posted: 2013年2月02日(土) 11:17
by パクパク
いつも回答ありがとうございます。
文字列を入力するprompt()という関数を作成するという問題があるのですが
教科書の正答ではプロトタイプ関数の引数の名前と異なる名前が15行目で使われています。
やはり同じ変数名を使った方が良いのでしょうか。
回答お願い致します。
コード:
#include <stdio.h>
void prompt(char *msg, char *str);
int main(void)
{
char str[80];
prompt("文字列を入力してください: ", str);
printf("入力された文字列: %s", str);
return 0;
}
void prompt(char *msg, char *p)
{
printf(msg);
gets(p);
}
Re: プロトタイプ関数で宣言した引数の名前の変更について
Posted: 2013年2月02日(土) 11:27
by Priest
プロトタイプ宣言時の引数名は無視されますので、引数名はプロトタイプ宣言と違っていてもかまいません。
Re: プロトタイプ関数で宣言した引数の名前の変更について
Posted: 2013年2月02日(土) 11:33
by へにっくす
コンパイラにとって、同じ関数かどうかは、関数名と、戻り値、引数の型であって、引数の名前まで入っていません(指定しなくてもよい)。
なので掲示したコードでは間違ってはいません。
コード:
//引数の名前を指定しないでもok
void prompt(char*, char*);
//実装でも引数を使用しない場合は、名前を省略できる
//しかし使わないなら消した方がいいけどねw
void prompt(char *, char*)
{
puts("OK?");
}
Re: プロトタイプ関数で宣言した引数の名前の変更について
Posted: 2013年2月02日(土) 11:46
by パクパク
Priest さんが書きました:プロトタイプ宣言時の引数名は無視されますので、引数名はプロトタイプ宣言と違っていてもかまいません。
へにっくす さんが書きました:コンパイラにとって、同じ関数かどうかは、関数名と、戻り値、引数の型であって、引数の名前まで入っていません(指定しなくてもよい)。
なので掲示したコードでは間違ってはいません。
お二方、返信どうもありがとうございました。