-3

嘿伙计们,我按照头文件教程编写了一个非常简单的程序,我在头文件中定义了一个函数,例如

void SayHello()
{
    std::cout<<"Hello"<<std::endl;
}

然后在 main.cpp 中调用它

而不是在屏幕上打印你好,而是打印一个数字

00E51028

我相信这是一个记忆位置???

我只是想知道为什么会这样,以及如何解决它。多谢你们

编辑 main.cpp 代码

int _tmain(int argc, _TCHAR* argv[])
{
void SayHello();

std::cout<<SayHello<<std::endl;

std::system("Pause");
return 0;
}
4

3 回答 3

5
 std::cout<<SayHello<<std::endl;

这将打印您系统上的 functionSayHello的地址。00E51028您应该简单地调用它,如下所示:

 SayHello();

您还应该将 的函数声明SayHello移到main.

于 2013-06-03T22:41:33.747 回答
3

你有:

std::cout << SayHello << std::endl;

这不是打印字符串,这只是函数的名称。该函数SayHello将衰减为函数指针,这就是打印地址的原因。

由于该函数已经包含打印字符串的指令,您需要做的就是调用该函数:

SayHello(); // prints "Hello" to standard output

如果函数返回一个字符串,你可以打印出它的返回值:

#include <iostream>
#include <string>

std::string SayHello()
{
    return "Hello";
}

int main()
{
    std::cout << SayHello() << std::endl; // note the () operator to call the function
                                         // and return its return value to the expression
}
于 2013-06-03T22:46:33.073 回答
1

“嘿,伙计们,我按照头文件教程编写了一个非常简单的程序,我在头文件中定义了一个函数,例如”

头文件用于声明。您在 .cpp(或 .C 等)文件中定义它。该文件被编译一次以创建一个目标文件。头文件告诉编译器签名是这样的。e

于 2013-06-03T22:50:25.640 回答