Как эти две строки указателя выполняются? - PullRequest
1 голос
/ 01 апреля 2020
#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;


}

Как строки выглядят << p3.Pptr-> Pptr-> i << endl; cout << p3.Pptr-> i << endl; выполняется в программе? </p>

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

После этих операторов

P p1 = {NULL, 1};
P p2 = {&p1, 2};
P p3 = {&p2, 3};

у вас есть цепочка (из-за элемента данных Pptr)

p3 -> p2 -> p1 -> NULL

Так что это выражение p3.Pptr->Pptr->i сначала относится к p2 ( p3.Pptr), а затем в p1 (p3.Pptr->Pptr) и выводится значение элемента данных i структуры p1

Это выражение p3.Pptr->i относится к p2 (p3.Pptr ) и его элемент данных i выводится.

0 голосов
/ 01 апреля 2020
p3.Pptr points to p2
p2.Pptr points to p1
p1.Pptr is NULL

1) cout << p3.Pptr-> Pptr-> i << endl; </p>

    p3.Pptr->Pptr->i   is  1

2) cout << p3.Pptr -> i << endl; </p>

    p3.Pptr->i         is  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...