C++ 这两行指针是如何执行的? #包括 使用名称空间std; 结构P{ P*Pptr; int i; }; int main(){ p1={NULL,1}; p2={&p1,2}; p3={&p2,3}; 在这些陈述之后cout Pptr->i

C++ 这两行指针是如何执行的? #包括 使用名称空间std; 结构P{ P*Pptr; int i; }; int main(){ p1={NULL,1}; p2={&p1,2}; p3={&p2,3}; 在这些陈述之后cout Pptr->i,c++,pointers,C++,Pointers,#include<iostream> using namespace std; struct P{ P *Pptr; int i; }; int main(){ P p1 = {NULL, 1}; P p2 = {&p1, 2}; P p3 = {&p2, 3}; cout << p3.Pptr->Pptr->i << endl; cout << p3.Pptr->i << e

#include<iostream>
using namespace std;
struct P{
  P *Pptr;
  int i;
};

int main(){
  P p1 = {NULL, 1};
  P p2 = {&p1, 2};
  P p3 = {&p2, 3};

cout << p3.Pptr->Pptr->i << endl;
 cout << p3.Pptr->i << endl;


}
您有一个链(由于数据成员Pptr)

所以这个表达式
p3.Pptr->Pptr->i
首先指的是
p2
p3.Pptr
),然后指的是
p1
(p3.Pptr->Pptr),并且输出结构
p1
的数据成员
i
的值

此表达式
p3.Pptr->i
表示
p2
p3.Pptr
)并输出其数据成员
i

p3 -> p2 -> p1 -> NULL

1) cout-Pptr->i这听起来像是一个家庭作业问题。你不明白的是什么?如果你能更具体一些,你会得到更多有用的帮助。不,我只是想学习指针的流程
p3 -> p2 -> p1 -> NULL
p3.Pptr points to p2
p2.Pptr points to p1
p1.Pptr is NULL
    p3.Pptr->Pptr->i   is  1
    p3.Pptr->i         is  2