When typedef is used in C, will it create a new type or only a type name?
<pre><code>#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

typedef struct Books {
     char title[50];
     char author[50];
     char subject[100];
     int book_id;
} Book;

int main( ) {

  Book book;

  strcpy( book.title, "C Programming");
  strcpy( book.author, "Nuha Ali"); 
  strcpy( book.subject, "C Programming Tutorial");
  book.book_id = 6495407;

  printf( "Book title : %s\n", book.title);
  printf( "Book author : %s\n", book.author);
  printf( "Book subject : %s\n", book.subject);
  printf( "Book book_id : %d\n", book.book_id);

  return 0;
}
</code></pre>

<blockquote>
  <p>Here in this example, Book is a new Data type or its just an alternate name to structure?</p>
</blockquote>

<p>or in other words if the code is :<code>typedef unsigned char newDType;</code>
<code>newDType</code> is a new data type or alternate name to <code>unsigned char</code>?</p>