title: Initializing user defined type array in C
body: <p>I need to write a simple library program using the structure Book:</p>
  
  <pre><code>typedef struct book {
      char name[NAME_LENGTH];
      char author[AUTHOR_NAME_LENGTH];
      char publisher[PUBLISHER_NAME_LENGTH];
      char genre[GENRE_LENGTH];
      int year;
      int num_pages;
      int copies;
  } Book;
  </code></pre>
  
  <p>When the program runs the user can take out books from the library/add books/print books etc:</p>
  
  <pre><code>#define BOOK_NUM        50
  
  int main(){
  
  Book books[BOOK_NUM] = { 0 };
  int opt = 0, books_counter = 0, *books_counter_p;
  books_counter_p = &amp;books_counter;
  
  
  do {
      print_menu();
      scanf("%d", &amp;opt);
      while (opt &lt; 1 || opt &gt; 5) {
          printf("Invalid option was chosen!!!\n");
          print_menu();
          scanf("%d", &amp;opt);
      }
  
      switch (opt) {
          case 1:
              // Add book to library
              add_book(books, books_counter_p);
  
  
              break;
          case 2:
              // Take a book from library
              break;
          case 3:
              // Return book
              break;
          case 4:
              // Print all books
              break;
          case 5:
              // Release all memory allocated for library
              break;
          default:
              printf("We should not get here!\n");
      }
  } while (opt != 5);
  
  return 0;
  }
  </code></pre>
  
  <p>I need some way to store the books so I can change the library as the program runs(I don't know in advance how many books the user will add/remove during the program run).</p>
  
  <p>I don't want to use dynamic memory, can I define an empty array of books this way: Book books[BOOK_NUM] = { 0 }; ?
  It seems to work but 0 is an int type and not a Book type, will I run into troubles?</p>