为什么cout没有显示x?

时间:2013-11-09 06:35:52

标签: c++ char void cout

我正在学习C ++,我创建了一个使用char的简单void函数。我将函数原型化为top,在int main中定义它并尝试输出“Your name is”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 ++,因为没有人愿意帮助其他人学习

3 个答案:

答案 0 :(得分:2)

它无法正常工作的主要原因是您没有为John分配值。 John只是您用来识别的变量名称。

如果您想展示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放入每个功能中,只需将其放在顶部或代码上即可。

答案 1 :(得分: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数据类型。

答案 2 :(得分:0)

看起来这个问题的主要问题是你的印象是变量John被初始化为“John”。这有两个原因。首先,变量John未初始化(尚未赋值)。其次,变量John是一个char,这意味着它只能容纳一个字符。 尝试改变 char约翰; 对此: string name =“John”;

然后替换对变量的引用。

第一次使用程序员的一个大问题是假设变量的名称与变量存储的实际值有关。我可以做这个: int doody = 3.14;

doody将对pi有一个不错的估计。我也可以这样做: int pi = 3.14;

然后pi会对pi有一个不错的估计。

仅仅因为您为变量命名并不意味着它包含与该名称相关的任何数据。说完这个之后,你应该远离命名变量之类的东西,比如'x',什么不是因为那不是描述性的。变量的名称应该描述它的内容,但是开发人员应该知道变量的名称并不能确定它的内容(yay ambiguity ... sort of)