Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Iterate Through an Array

Create Cell Array from lib.pointer Object

This example shows how to create a MATLAB® cell array of character vectors, mlStringArray, from the output of the getListOfStrings function.

Load the shrlibsample library.

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

Call the getListOfStrings function to create an array of character vectors. The function returns a pointer to the array.

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

lib.pointer

Create indexing variables to iterate through the arrays. Use ptrindex for the array returned by the function and index for the MATLAB array.

ptrindex = ptr;
index = 1;

Create the cell array of character vectors mlStringArray. Copy the output of getListOfStrings to the cell array.

% 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

View the contents of the cell array.

mlStringArray
mlStringArray =

  1×4 cell array

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

Perform Pointer Arithmetic on Structure Array

This example shows how to use pointer arithmetic to access elements of a structure. The example creates a MATLAB structure, based on the c_struct definition in the shrlibsample.h header file.

Load the definition.

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

Create the MATLAB structure.

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

Create a pointer to the structure.

sptr = libpointer('c_struct',s);

Read the values of the first element.

v1 = sptr.Value
v1 = 

  struct with fields:

    p1: 1
    p2: 1
    p3: 0

Read the values of the next element by incrementing the pointer.

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

  struct with fields:

    p1: 2
    p2: 2
    p3: 0

Was this topic helpful?