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)
为什么这个指针被分配了两个不同的值?
以下声明
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
它没有赋值.