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