Why are *curr and curr->val the same value?
<p>Consider:</p>

<pre><code>#include&lt;stdlib.h&gt;
#include&lt;stdio.h&gt;

struct node {
    int val;
    struct node *next;
};

typedef struct node item;

void main() {
    item * curr, *head;
    int i;

    head = NULL;
    for (i = 1; i &lt;= 10; i++) {
        curr = (item *)malloc(sizeof(item));

        curr-&gt;val = i;
        curr-&gt;next = head;
        head = curr;
    }

   curr = head;
   while (curr) {
        printf("%d\n", curr-&gt;val);
        printf("%d\n", *curr);
        curr = curr-&gt;next;
   }

   getchar();
}
</code></pre>

<hr>

<p>As I print out, <code>*curr</code> and <code>curr-&gt;val</code> are the same. Why?</p>

<p>I am confused about <code>*curr</code>. I think <code>*curr</code> is the value <code>&amp;curr</code> points to. (I am newbie in C.)</p>