2014-09-19 3 views
-1

Могу ли я узнать, почему, если я получу что-то вроде адреса с выхода. Может ли кто-нибудь сказать мне, как сделать вывод в качестве значения? Я новичок в указателе и собираюсь сделать связанный список.Указатель, не удалось распечатать значение

struct node{ 
    int x; 
    node *next; 
}; 

int main(){ 

    node *root;  

    root = new node; 
    root->next = 0; 

    root->x = 5; 
    cout << root << endl; 

    return 0;   
} 
+0

Связано: Нет разницы между 'structs' и' classes' в C++ (кроме видимости по умолчанию). Вы должны предоставить конструктор для 'node', чтобы он устанавливал' x = 0' и 'next = NULL'. – jww

ответ

3

То же, что вы назначили значение х

cout << root->x << endl; 
+0

Большое спасибо :) – Danzeeeee

0

вы также можете получить доступ значение в x как:

cout<<(*root).x<<endl; 
+0

Спасибо большое yea :) – Danzeeeee

+2

вы можете проголосовать за ответ, а не спасибо :) – Rustam

4

Ну, если вы действительно хотели, вы можете перегрузить operator<< к выходу значение класса node/struct, я в настоящее время не рядом с компилятором, но я предполагаю, что он будет выглядеть как-то так:

inline std::ostream& operator<< (std::ostream& os, const node* myNode) 
{ 
    os << myNode->x; 
    return os; 
} 

// Использование:

std::cout << root << std::endl; 

Хотя, если вы просто хотите, чтобы получить значение самым простым способом возможно, вы всегда можете просто использовать operator->, как показано ниже:

std::cout << root->x << std::endl; 
+0

Передача указателя на 'cout' и получение значения, на которое он указывает, необычен, ИМО лучше всего делает ссылку , – GingerPlusPlus

+0

Спасибо за изменения, я не был рядом с компилятором и хочу убедиться, что ответ был прав и ясен. –