-3

やあみんな、ヘッダーファイルのチュートリアルに従って、ヘッダーで次のような関数を定義する非常に単純なプログラムを作成しました

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

そしてそれをmain.cppで呼び出します

画面に hello を出力する代わりに、次のような数字を出力します

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;

SayHelloこれは、システム上の function のアドレスを出力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 に答える