#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的指针来打印地址时,我意外地发现它们而不是能够逻辑地提出正确的符号。
我想知道我提出的是否正确用于打印成员变量的地址,如果是,那么它是如何正确表示的?