使用指向该结构的指针访问struct变量成员的地址

时间:2017-05-12 15:11:45

标签: c++ pointers struct

#include<iostream>
    using namespace std;
    int main()
    {
    struct node
    {
        int data;
        struct node *next;
    };

    struct node *node1;

    struct node node2;

    node2.data = 200;
    node2.next = NULL;

    cout<<"address of node2: "<<&node2<<endl;

    cout<<"address of node2.data: "<<&node2.data<<endl;

    cout<<"address of node2.next: "<<&node2.next<<endl;

    cout<<"value of node2 data: "<<node2.data<<endl;

    cout<<"value of node2 next is: "<<node2.next<<endl;

    node1 = (struct node*)malloc(sizeof(node));

    node1->data = 100;

    node1->next = NULL;

    cout<<"value of node1 data: "<<node1->data<<endl;

    cout<<"value of node1 next: "<<node1->next<<endl;

    cout<<"address of node1 variable is: "<<&node1<<endl;

    cout<<"address of node1 data variable is: "<<&node1->data<<endl;

    cout<<"address of node1 next variable is: "<<&node1->next<<endl;

    cout<<"value stored at node1 variable is: "<<node1<<endl;

    }

我想使用指向该结构的指针打印struct变量成员的地址。从我上面的代码示例中可以看出,我使用了&amp; node1-&gt; next和&amp; node1-&gt;数据来打印地址。它似乎是打印正确的地址,因为我可以通过解除引用&amp; node1-&gt; next和&amp; node1-&gt;数据返回的地址来访问这些值。 *(&amp; node1-&gt; next)和*(&amp; node1-&gt; data)正确返回值。

但我不明白符号&#34;&amp; node1-&gt;数据&#34;和&#34;&amp; node1-&gt; next&#34;返回struct变量成员的地址。我意外地发现&amp; node1-&gt;数据和&amp; node1-&gt;接下来打印了地址。与其他符号如&amp; node2.data和&amp; node2.next一样,我能够逻辑地提出打印地址的符号,但是当使用指向struct的指针来打印地址时,我意外地发现它们而不是能够逻辑地提出正确的符号。

我想知道我提出的是否正确用于打印成员变量的地址,如果是,那么它是如何正确表示的?

0 个答案:

没有答案