title: function pointer equal to another pointer within the function, why need to add *
body: <p>please take look at Node *newNode(), i dont understand why i must add * for p=x
  i made an Node named x(with data &amp; next), and created a new memory space *p by using malloc,
  then let p = x, but by i must add * for p=x?</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  #include&lt;stdlib.h&gt;
  struct Node{
      int data;
      Node *next;
  };
  
  Node *newNode(int data, Node *next){
      Node x = {data, next};
      Node *p = (Node *)malloc(sizeof(Node));
      *p = x; //i dont understand why an * need to be added here
      return p;
  }
  
  showNode(const struct Node *p){
      printf("%d\n", p-&gt;data);
  }
  
  int main(){
      Node *pHead = NULL;
      for(int i=4; i&gt;=0; i--) {
          pHead = newNode(i,pHead);   
      }    
      printf("%d\n", pHead-&gt;next-&gt;next-&gt;next-&gt;data);
  
      Node* p = pHead;
      while(p != NULL){
          showNode(p);
          p = p-&gt; next;
      }
  
      p = pHead;
      while(p != NULL){
          Node *pTemp = p;
          p = p-&gt;next;
          free(pTemp);
      }
  } 
  </code></pre>