查詢

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

補充糾錯
上一個函式: FFI::cdef()函式
下一個函式: FFI::arrayType()函式
熱門PHP函式
分享連結