c++ - 在 c/c++ 中分配指针

标签 c++ c pointers reference

我正在浏览博客,详细介绍了 OpenSSL 的 Heartbeat 实现的易受攻击的代码。

我找到了这一行:

unsigned char *P = &s->s3->rrec.data[0], *p1;

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

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

另一个是

*p1

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

最佳答案

下面的语句

unsigned char *P = &s->s3->rrec.data[0], *p1;

等于

unsigned char *P = &s->s3->rrec.data[0];
unsigned char *p1;

这进一步等于

unsigned char *P;
unsigned char *p1;
P = &s->s3->rrec.data[0];

而在C中,&s->s3->rrec.data[0]表示取s->s3->rrec.data[0]的地址.

哦对了,unsigned char *P = &s->s3->rrec.data[0];是指针变量P的定义和初始化,里面没有赋值。

关于c++ - 在 c/c++ 中分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314874/

相关文章:

c++ - 删除前面有空格的前 2 个字符串

c++ - 如何将事件 Hook 到 CFileDialog?

c - gcov: 无法打开图形文件

c++ - 深入理解strcat和strlen函数

c++ - 如何从指针中提取引用?

c - 从键盘接受 5 个字符串的程序

C++、WIN32、WndProc 到成员函数崩溃(0x88 处的访问冲突)

c++ - 为什么我们使用 `#include "stdafx.h "` instead of ` #include <stdafx.h>`?

用于打印 C 文件的函数详细信息的 C 程序

c - 将静态数组传递给函数是否有效?