ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

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

配列による反復

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

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

関数 getListOfStrings は、文字列配列を作成し、その配列に対するポインターを返します。

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

関数を呼び出します。

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

lib.pointer

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

ptrindex = ptr;
index = 1; 

文字列のセル配列 mlStringArray を作成します。

while ischar(ptrindex.value{1}) %stop at end of list (NULL)
    mlStringArray{index} = ptrindex.value{1};
    ptrindex = ptrindex + 1; %increment pointer 
    index = index + 1; %increment array index
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;

次の要素の値を読み取るためにポインターをインクリメントします。

sptr = sptr + 1;
v2 = sptr.Value;
この情報は役に立ちましたか?