2014-09-19 103 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

相关:C++中的'structs'和'classes'没有区别(默认可见性除外)。您应该为'node'提供一个构造函数,以便设置'x = 0'和'next = NULL'。 – jww 2014-09-20 00:32:41

回答

3

你一样赋值为x

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

谢谢很多朋友:) – Danzeeeee 2014-09-19 18:51:56

0

您还可以访问的x值:

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

非常感谢:) – Danzeeeee 2014-09-19 18:52:50

+2

你可以投票的答案,而不是谢谢:) – Rustam 2014-09-19 18:58:51

4

那么,如果你真的想,你可以重载operator<<输出节点类/结构的值,我目前不在编译器附近,但我认为它会这样:

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

//用法:

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

但如果你只是想以最简单的方式可能值,你总是可以只使用 操作符 - >如下图所示:

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

传递一个指针“cout”,并获得它指向的价值是不寻常的,国际海事组织更好的方式是采取参考。 – GingerPlusPlus 2014-09-19 19:08:39

+0

感谢您的编辑,我没有接近编译器,并且希望确保答案是正确和清晰的。 – 2014-09-19 19:24:32