プロトタイプ関数で宣言した引数の名前の変更について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
パクパク
記事: 23
登録日時: 11年前

プロトタイプ関数で宣言した引数の名前の変更について

#1

投稿記事 by パクパク » 11年前

いつも回答ありがとうございます。

文字列を入力する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);
}

Priest
記事: 123
登録日時: 11年前
住所: 愛知

Re: プロトタイプ関数で宣言した引数の名前の変更について

#2

投稿記事 by Priest » 11年前

プロトタイプ宣言時の引数名は無視されますので、引数名はプロトタイプ宣言と違っていてもかまいません。

コード:

#include <Priest.h>
int MyPolicy ( void ) { printf( "何事も楽しくね!" ); return 0; }

アバター
へにっくす
記事: 634
登録日時: 11年前
住所: 東京都

Re: プロトタイプ関数で宣言した引数の名前の変更について

#3

投稿記事 by へにっくす » 11年前

コンパイラにとって、同じ関数かどうかは、関数名と、戻り値、引数の型であって、引数の名前まで入っていません(指定しなくてもよい)。
なので掲示したコードでは間違ってはいません。

コード:

//引数の名前を指定しないでもok
void prompt(char*, char*);

//実装でも引数を使用しない場合は、名前を省略できる
//しかし使わないなら消した方がいいけどねw
void prompt(char *, char*)
{
    puts("OK?");
}
written by へにっくす

パクパク
記事: 23
登録日時: 11年前

Re: プロトタイプ関数で宣言した引数の名前の変更について

#4

投稿記事 by パクパク » 11年前

Priest さんが書きました:プロトタイプ宣言時の引数名は無視されますので、引数名はプロトタイプ宣言と違っていてもかまいません。
へにっくす さんが書きました:コンパイラにとって、同じ関数かどうかは、関数名と、戻り値、引数の型であって、引数の名前まで入っていません(指定しなくてもよい)。
なので掲示したコードでは間違ってはいません。
お二方、返信どうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る