在c/c ++中分配指针

use*_*421 2 c c++ pointers reference

我正在看一下博客,详细介绍了Heartbeat实现OpenSSL的易受攻击的代码.

我找到了这一行:

unsigned char *P = &s->s3->rrec.data[0], *p1;
Run Code Online (Sandbox Code Playgroud)

我不明白的是这个指针*p如何分配两个不同的值?一个是:

&s->s3->rrec.data[0]  (also, why is he referencing s?)
Run Code Online (Sandbox Code Playgroud)

另一个是

*p1
Run Code Online (Sandbox Code Playgroud)

为什么这个指针被分配了两个不同的值?

Lee*_*hem 6

以下声明

unsigned char *P = &s->s3->rrec.data[0], *p1;
Run Code Online (Sandbox Code Playgroud)

等于

unsigned char *P = &s->s3->rrec.data[0];
unsigned char *p1;
Run Code Online (Sandbox Code Playgroud)

这进一步等于

unsigned char *P;
unsigned char *p1;
P = &s->s3->rrec.data[0];
Run Code Online (Sandbox Code Playgroud)

而在C中,&s->s3->rrec.data[0]意味着取地址s->s3->rrec.data[0].

哦,顺便说一句,unsigned char *P = &s->s3->rrec.data[0];是指针变量的定义和初始化,P它没有赋值.