ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

配列による反復

lib.pointer オブジェクトからのセル配列の作成

この例では、関数 getListOfStrings の出力から、文字ベクトルからなる MATLAB® のセル配列 mlStringArray を作成する方法を説明します。

shrlibsample ライブラリを読み込みます。

if not(libisloaded('shrlibsample'))
    addpath(fullfile(matlabroot,'extern','examples','shrlib'))
    loadlibrary('shrlibsample')
end

関数 getListOfStrings を呼び出して文字ベクトルの配列を作成します。関数は配列を指すポインターを返します。

ptr = calllib('shrlibsample','getListOfStrings');
class(ptr)
ans =

lib.pointer

配列を通じて反復するインデックス変数を作成します。関数によって返された配列には ptrindex を使用し、MATLAB 配列には index を使用します。

ptrindex = ptr;
index = 1;

文字ベクトルのセル配列 mlStringArray. Copy the output of getListOfStrings to the cell array. を作成します。getListOfStrings の出力をセル配列にコピーします。

% read until end of list (NULL)
while ischar(ptrindex.value{1})
    mlStringArray{index} = ptrindex.value{1};
    % increment pointer
    ptrindex = ptrindex + 1;
    % increment array index
    index = index + 1;
end

セル配列の内容を表示します。

mlStringArray
mlStringArray = 

    'String 1'    'String Two'    ''    'Last string'

構造体配列でのポインター演算の実行

この例では、ポインター演算を使用して構造体の要素にアクセスする方法を示します。例においては、shrlibsample.h ヘッダー ファイルにある c_struct の定義を基に、MATLAB 構造体を作成します。

定義を読み込みます。

if not(libisloaded('shrlibsample'))
    addpath(fullfile(matlabroot,'extern','examples','shrlib'))
    loadlibrary('shrlibsample')
end

MATLAB 構造体を作成します。

s = struct('p1',{1,2,3},'p2',{1.1,2.2,3.3},'p3',{0});

構造体へのポインターを作成します。

sptr = libpointer('c_struct',s);

最初の要素の値を読み取ります。

v1 = sptr.Value
v1 = 

    p1: 1
    p2: 1
    p3: 0

ポインターをインクリメントして次の要素の値を読み取ります。

sptr = sptr + 1;
v2 = sptr.Value
v2 = 

    p1: 2
    p2: 2
    p3: 0

この情報は役に立ちましたか?