牛牛在线工具

FFI::cast()

收录 8868 个 PHP 函数,含用途说明与用法示例。

FFI::cast()

将指针转换为不同类型的指针

函数名:FFI::cast() 适用版本:PHP 7.4.0 及以上版本 用法: FFI::cast() 函数用于将指针转换为不同类型的指针。 语法: FFI::cast(string $type, mixed $ptr): mixed 参数: $type:要转换的目标类型,可以是 C 原生类型、结构体或联合体。 $ptr:要转换的指针。 返回值: 返回一个指向指定类型的指针。 示例: <?php // 定义 C 结构体 $ffi = FFI::cdef(" typedef struct { int x; int y; } Point; ", "libc.so.6"); // 分配内存并获取指针 $ptr = $ffi->new("Point"); $ptr->x = 10; $ptr->y = 20; // 将指针转换为不同类型的指针 $ptr2 = FFI::cast("int*", $ptr); // 修改转换后的指针的值 $ptr2[0] = 30; // 打印原始指针和转换后的指针的值 echo $ptr->x; // 输出 30 echo $ptr->y; // 输出 20 上述示例中,我们首先定义了一个 C 结构体 Point,然后使用 FFI 扩展创建了一个指向该结构体的指针 $ptr,并将其 x 和 y 成员的值分别设置为 10 和 20。然后,我们使用 FFI::cast() 将该指针转换为 int* 类型的指针 $ptr2,并将其值修改为 30。最后,我们打印原始指针和转换后的指针的值,可以看到原始指针的 x 成员的值也被修改为 30,证明了指针转换的成功。 ```