Effacer les filtres
Effacer les filtres

Can handle class be used to simulate "Pointer" in C language?

10 vues (au cours des 30 derniers jours)
Shunchao Wu
Shunchao Wu le 15 Nov 2011
If I define a "Ptr" class as following:
classdef Ptr < handle
properties
data
end
end
then, objects of Ptr will behave like pointers in C language.
Is this true, guys?
  1 commentaire
Shunchao Wu
Shunchao Wu le 15 Nov 2011
Why is the "Bytes" 0 in Variable Editor?
The "Bytes" of a field of a struct, or a property of a object, is 0.
Verified on 2008a and 1010b.

Connectez-vous pour commenter.

Réponses (2)

Daniel Shub
Daniel Shub le 15 Nov 2011
Objects of the handle class are not identical to pointers. When you pass an object to a function (whether it is a value class or a handle class), MATLAB does not immediately make a copy of the object. It is almost like it passes a pointer (but it is not a pointer). MATLAB has a complicated COW and tries not to copy the object unless it needs to. With a high level language of MATLAB you have to give up some of the control on memory management and hope MATLAB behaves in a reasonable manner.
  3 commentaires
per isakson
per isakson le 15 Nov 2011
Undocumented Matlab at, http://undocumentedmatlab.com/ , might interest you.
Shunchao Wu
Shunchao Wu le 16 Nov 2011
Great website!
Thanks, isakson.

Connectez-vous pour commenter.


Titus Edelhofer
Titus Edelhofer le 15 Nov 2011
Hi,
"then objects of Ptr will behave like pointers". If the behaviour you mean is that once you change a Ptr, all other variables that "point" to the same object are changed as well, then yes. Example:
x = Ptr;
y = x; % both x and y "point" to the same object
x.data = 2; % now y.data is 2 as well
But I would say that "reference" like the & in C++ comes nearer to what handle classes are ...
Titus
  5 commentaires
Titus Edelhofer
Titus Edelhofer le 16 Nov 2011
hmm, why not? When you pass an object by reference to a function, the function may change the underlying/referenced object. Of course only, as long as you don't pass a const reference ... Or do I remember entirely wrong, since my C++ programming is about 10 years ago by now ;-).
Shunchao Wu
Shunchao Wu le 19 Nov 2011
en, Titus is right.
The only difference between handle class and C++'s reference is, C++'s reference can not change to another value since initialization.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by