This declaration
char ch[10] = { 'h', 'e', 'l', 'l', 'o' };
is equivalent to this declaration
char ch[10] = { "hello" };
that in turn is equivalent to the following declaration
char ch[10] = "hello";
and all these declarations are equivalent to the following declaration
char ch[10] = { 'h', 'e', 'l', 'l', 'o', '\0', '\0', '\0', '\0', '\0', };
That is elements of the array that do not have explicit initializers are implicitly zero-initialized.
From the C Standard (6.7.9 Initialization)
10 If an object that has automatic storage duration is not initialized
  explicitly, its value is indeterminate. If an object that has static
  or thread storage duration is not initialized explicitly, then:
...
— if it has arithmetic type, it is initialized to (positive or
  unsigned) zero;
and
19 The initialization shall occur in initializer list order, each
  initializer provided for a particular subobject overriding any
  previously listed initializer for the same subobject;151) all
  subobjects that are not initialized explicitly shall be initialized
  implicitly the same as objects that have static storage duration.