I\'ve been trying to figure out pointers in C most of today, even asked a question earlier, but now I\'m stuck on something else. I\'ve got the following code:
You're getting confused because of multiple typedefs. LIST
is a type representing a pointer to struct listhead
. So, you want your ListCreate
function to return a LIST
, not a LIST *
:
LIST ListCreate(void)
The above says: ListCreate()
function will return a pointer to a new list's head if it can.
Then you need to change the return
statement in the function definition from return &headpoolp-1;
to return headpoolp-1;
. This is because you want to return the last available head pointer, and you have just incremented headpoolp
. So now you want to subtract 1 from it and return that.
Finally, your main()
needs to be update to reflect the above changes:
int main(void)
{
/* Make a new LIST */
LIST newlist; /* a pointer */
newlist = ListCreate();
int i = ListCount(newlist);
printf("%d\n", i);
return 0;
}