%% Pass Pointer of Type double
% This example shows how to construct and pass a pointer to C function multDoubleRef.
% Load the library containing the function.

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

%
% Construct a pointer, Xptr, to the input argument, X.

X = 13.3;
Xptr = libpointer('doublePtr',X);

%
% Verify the contents of Xptr.

get(Xptr)

%
% Call the function and check the results.

calllib('shrlibsample','multDoubleRef',Xptr);
Xptr.Value

%
% Xptr is a handle object. Copies of this handle refer to the same underlying object and any operations you perform on a handle object affect all copies of that object. However, Xptr is not a C language pointer. Although it points to X, it does not contain the address of X. The function modifies the Value property of Xptr but does not modify the value in the underlying object  X. The original value of X is unchanged.

X

% Copyright 2015 The MathWorks, Inc.