Thanks for the explanation -- the difference is that Perl can return a CODEREF, but C doesn't have that functionality. It would be possible to initialize a function to behave like an iterator, but without a great deal of jumping through hoops, you wouldn't be able to run multiple different iterators, as your Perl example could.
That's OK -- without C, you wouldn't have pretty much any of the modern languages I can think of (Perl, Python, PHP). And C is still an amazing language.
Alex / talexb / Toronto
Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.