title: Functions with pointers in exercise 16 learn c the hard way
body: <p>I have a question about ex 16 of <a href="http://c.learncodethehardway.org/book/ex16.html" rel="nofollow">learn C the hard way</a>.</p>
  
  <p>There is a function definition at the beginning of the code:</p>
  
  <pre><code>struct Person {
      char *name;
      int age;
      int height;
      int weight;
  };
  
  struct Person *Person_create(char *name, int age, int height, int weight)
  {
      struct Person *who = malloc(sizeof(struct Person));
      assert(who != NULL);
  
      who-&gt;name = strdup(name);
      who-&gt;age = age;
      who-&gt;height = height;
      who-&gt;weight = weight;
  
      return who;
  }
  </code></pre>
  
  <p>What is the reason that the function is written with a pointer? *Person_create?
  I really have problems understanding the whole concept of pointers and when you should use them. Can anybody help me?</p>