OT: Programming in C
Les Mikesell
lesmikesell at gmail.com
Mon Apr 21 18:01:27 UTC 2008
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.
--
Les Mikesell
lesmikesell at gmail.com
More information about the users
mailing list