Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

lib.pointerオブジェクト全体での反復

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

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

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

ifnot(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;

文字ベクトルの cell 配列mlStringArrayを作成します。getListOfStringsの出力をこの cell 配列にコピーします。

% read until end of list (NULL)whileischar(ptrindex.value{1}) mlStringArray{index} = ptrindex.value{1};% increment pointerptrindex = ptrindex + 1;% increment array indexindex = index + 1;end

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

mlStringArray
mlStringArray =1x4 cell{'String 1'} {'String Two'} {0x0 char} {'Last string'}

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

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

定義を読み込みます。

ifnot(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 =struct with fields:p1: 1 p2: 1 p3: 0

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

sptr = sptr + 1; v2 = sptr.Value
v2 =struct with fields:p1: 2 p2: 2 p3: 0