0

私は C++ を学んでおり、char を使用する単純な void 関数を作成しました。関数のプロトタイプを作成し、int main で定義して、「あなたの名前は "x. x(ジョン)の部分ではなく、「あなたの名前は」とだけ表示される理由を誰か教えてもらえますか?

#include <iostream>
#include <cstdlib>
#include <cmath>

void myfun(char x);

int main() {
using namespace std;

char John;
myfun(John);

system("pause");
return 0;
}

void myfun(char x) {
using namespace std;

cout << "Your name is " << x << endl;
}

なぜこれが反対票を投じられているのか疑問に思っています.C++を学ぶのをやめたほうがいいかもしれません.

4

3 に答える 3

2

機能しない主な理由は、に値を割り当てていないためですJohnJohn識別に使用する単なる変数名です。

表示したい場合Your name is Johnは値を指定する必要があり、文字列を出力したい場合は ではStringない必要がありcharます。

例:

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

void myfun(string x);

int main() {
  string John = "John";
  myfun(John);

  system("pause");
  return 0;
}

void myfun(string x) {  
  cout << "Your name is " << x << endl;
}

最後に、すべての関数に入れる必要はありませんusing namespace std。単純にコードの上に置くことができます。

于 2013-11-09T06:42:27.977 に答える
0

これに関する主な問題は、変数 John が「John」に初期化されたという印象を受けていたことです。これには 2 つの理由があります。まず、変数 John が初期化されていません (値が割り当てられていません)。次に、変数 John は char であり、1 文字しか保持できないことを意味します。char John を変更してみてください。これに: string name = "John";

次に、変数への参照を置き換えます。

初めてのプログラマーにとっての大きな問題の 1 つは、変数の名前が、変数が格納する実際の値と関係があるという思い込みです。私はこれを行うことができます: int doody = 3.14;

doody は適切な pi の推定値を持っています。私もできます: int pi = 3.14;

そして、piは適切なpiの推定値を持ちます。

変数に名前を付けたからといって、その名前に関連するデータが保持されているわけではありません。そうは言っても、変数に「x」などの名前を付けることは避けてください。それは説明的ではないためです。変数の名前はその内容を説明する必要がありますが、開発者は変数の名前がその内容を決定しないことに注意する必要があります(あいまいさ...のようなものです)

于 2013-11-09T07:07:14.453 に答える
0

編集されたコード:

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;

void myfun(std::string x);

int main() {

std::string name = "John";
myfun(name);

system("pause");
return 0;
}

void myfun(str::string x) {
cout << "Your name is " << x << endl;
}

これを試して。文字列を使用するには、std::string データ型を使用します。

于 2013-11-09T06:39:17.517 に答える