void push(struct node** head_ref, int new_data)
{
/* allocate node */
struct node* new_node =
(struct node*) malloc(sizeof(struct node));
/* put in the data */
new_node->data = new_data;
/* link the old list off the new node */
new_node->next = (*head_ref);
/* move the head to point to the new node */
(*head_ref) = new_node;
}
If i remember correctly, putting a brackets on a pointer means calling a function?
If that's true i don't really understand why there are brackets on *head_ref.
Id love a little explanation on why do i need brackets on *head_ref
in this code.
In this particular case, the brackets are serving no purpose other than to clarify the programmer's intent, i.e. they they want to dereference head_ref
.
Note that head_ref
is a pointer to a pointer, so in this case, new_node->next
is being set to point to the original head of the linked list, and then the pointer pointed to by head_ref
is being updated to point to new_node
which is now the start of the list.
As Michael Krelin has pointed out below, putting brackets around a pointer do not mean it's a calling a function, or a pointer to a function. If you saw this: (*head_ref)()
then it would be a call to the function pointed to by head_ref
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With