2013-06-03 2 views
-2

Эй, ребята, я написал очень простую программу в следующем учебник по заголовочным файлам, где я определяю функцию в заголовке какПростой (возврат: аннулируется) Функция соиЬ возвращает ячейку памяти C++

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; 
} 
+0

Как вы это назвали? показать код – taocp

+0

[Невозможно воспроизвести] (http://coliru.stacked-crooked.com/view?id=bb678d0580f32a2a6851cdf77b2084ee-e54ee7a04e4b807da0930236d4cc94dc). Пожалуйста, укажите соответствующий код –

+0

Возможно, вы написали широкую строку 'L" Hello "' узкому потоку или наоборот? –

ответ

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

Эта печать адрес функции SayHello, которая 00E51028 в вашей системе. Вы должны просто назвать его следующим образом:

SayHello(); 

Вы также должны переместить объявление функции из SayHello на внешней стороне main.

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 
} 
1

«Эй, ребята, я написал очень простую программу в следующем учебник по заголовочным файлам, где я определить функцию в заголовке как»

файлы заголовки для деклараций. Вы определяете его в файле .cpp (или .C и т. Д.). Этот файл скомпилирован один раз для создания объектного файла. Файл заголовка сообщает компилятору, что подпись такова. e