On Mon, 2008-04-21 at 13:01 -0500, Les Mikesell wrote: > Bill Davidsen wrote: > > > >>>> Quiz for next Friday. What are these and what's the difference > >>>> between them: > >>>> > >>>> int (*(**p)[])(int) > >>> declare p as pointer to pointer to array of pointer to function (int) > >>> returning int > >>> > >>>> and > >>>> int *(*(**p)[])(int) > >>> declare p as pointer to pointer to array of pointer to function (int) > >>> returning pointer to int > >>> > >>> I would really want to see both a justification of method and > >>> certificate of sanity to someone who actually used either. I can just > >>> barely justify pointer to array of function returning int (state > >>> machines), these look like something a compiler compiler would do. > >> > >> I sort of recall using a pointer to an array of structs as the basic > >> data type for anything significant in C but I've mostly forgotten why. > >> I think sometimes it had to do with getting usable semantics to access > >> things in shared memory segments. > >> > > Pointer to struct is the heart of good linked lists, and a pointer to > > array of struct is certainly a reasonably use. I certainly use arrays of > > pointers to functions, both for state machines and and emulators, after > > that it gets very hard to maintain. > > But even if you only need the pointer to function (at first), you can > can put it inside a struct and write all the surrounding code to deal > with pointers to arrays of struct (even if there is only one...). I > don't think there is any real overhead to doing this and if you start > that way you can add elements to the struct when/if you realize you need > them without changing the outer loops that handle the pointers or the > memory allocation to store them. > I have done this. But you will discover if you distribute user available source code that a lot of folks get creeped out when you mix functions, pointers and data inside a structure. One quite lovely piece of code I wrote was taken over by a gentleman who didn't like pointers (I guess that was his problem), and he rewrote the whole package. After that it took 10x as long to execute. Regards, Les H -- fedora-list mailing list fedora-list@xxxxxxxxxx To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list