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