函式名: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,證明瞭指標轉換的成功。 ```