Hi Thomas,

thanks again for your "lecture in c thinking", this is very helpful for someone 
who made her way into programming, and IT in general, starting with Java 5 and 
Racket (pardon me, it used to be called scheme then :-; ) :-)

>> 
> 
> Correct, the caller has to provide a storage location for the output
> she's interested in and may pass NULL to indicate that no storage has
> been allocated because she's not interested in a return value.

That's good to know, I really was not aware of such a convention - but it makes 
sense as soon as you think about pointers as "storage allocation"!
In fact I remember I've already told myself before to always think of "storage 
allocation" when I read "pointer", but when you're not exposed to something for 
a long time you just forget things ...


> 
> In C++ output parameters are often declared using reference types, which
> are a special kind of pointer types that is always implicitly
> dereferenced when used in expressions and cannot be set to NULL


Yes, I think the C++ references were closer somehow to what I assumed (closer 
in "meaning"/intent I mean, not technically). (Not that I've worked with C++ 
too much either, just some very cursory exposure... :-;)


Thanks again,
Sigrid



> explicitly (at least not if the expression used to do so is simple
> enough for the compiler to realize what you're up to ;-)
> 
> If you declare a (_ptr o _something) type, racket always allocates space
> for a something, passes the pointer to the foreign function and then
> dereferences it to extract the _something after the foreign function
> returns. Racket should indeed never pass a NULL pointer here.
> 
> Ciao,
> Thomas
> 
> 
> -- 
> When C++ is your hammer, every problem looks like your thumb.

_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to