Is 'everything' a refrence or isn't it?
Dan Sommers
me at privacy.net
Thu Jan 5 11:23:08 EST 2006
On Thu, 05 Jan 2006 14:28:51 +0100,
David Murmann <david.murmann at rwth-aachen.de> wrote:
> Dan Sommers schrieb:
>> int **_idx;
>> for( _idx = lst; _idx < lst + NLST; ++_idx ) {
>> int *i;
>> i = *_idx;
>> /* compare "the item to which i is bound" to "a constant" */
>> if( *i == *(&_i2) )
>> /* rebind i to _i4 */
>> i = &_i4;
>> }
>> for( _idx = lst; _idx < lst + NLST; ++_idx ) {
>> int *i = *_idx;
>> printf( "%d\n", *i );
>> }
For reference, Stuart Gathman's looks like this:
> > int _idx; /* internal iterator */
> > for (_idx = 0; _idx < NLST; ++_idx) {
> > int *i = lst[_idx];
> i don't see what is so fundamentally different in this version
> compared to the one from Stuart Gathman (except it works, but i think
> it was a typo) ...
I agree that Stuart's error was a typo.
> ... do you want to stress that python uses an iterator (if so, i would
> have renamed _idx to _iter, because it ain't not index anymore)? whats
> the point of not starting the for loop at 0? ...
I was trying to show iteration over a list of items, rather than indexed
access into a list of pointers, but it is no longer as clear to me as it
was at the time that I did a good job of that. ;-)
Another thing I wanted to show is that no amount of changing i would
have any effect on the list, and I missed it in Stuart's code (my
fault).
Or maybe my Python/C ratio is so high that seeing a loop variable used
as an index into a list or an array just bugs me. ;-)
_iter vs. _idx is a non-starter for me because of the baggage associated
with those words.
> ... and is there a difference between (*i == _idx) and (*i ==
> *(&_idx))?
Again, just the emphasis that the comparison is through bindings rather
than directly on the objects, to show that the bindings are completely
independent of the objects. I am pretty sure that there is no semantic
difference between *(&_idx) and _idx in the "normal" case, but there may
be some very odd corner cases if _idx were volatile and/or delcared
register.
Regards,
Dan
--
Dan Sommers
<http://www.tombstonezero.net/dan/>
More information about the Python-list
mailing list