The following statement
unsigned char *P = &s->s3->rrec.data[0], *p1;
equals
unsigned char *P = &s->s3->rrec.data[0];
unsigned char *p1;
this further equals
unsigned char *P;
unsigned char *p1;
P = &s->s3->rrec.data[0];
And in C, &s->s3->rrec.data[0]
means taking the address of s->s3->rrec.data[0]
.
Oh, by the way, unsigned char *P = &s->s3->rrec.data[0];
is a definition and initialization of pointer variable P
, there is no assignment in it.