When intializing a char array, is the remaining space zero filled or uninitialized?

If a `char` array is uninitialized, are all the array elements automatically initialized as `0` ?
I was solving the problem Holes and my first solution which got WA was this : http://ideone.com/Ix4kc9

I then checked someone else’s solution which was almost identical but instead of `for (z = 0; c[z] != '0'; ++z)` , he had used `for (z = 0; c[z] != '\0'; ++z)` . After some googling I found that `\0` is NULL character. I don’t understand what it actually is. Then I found this question on SO. The top answer says that all uninitialized elements are stored as zeroes. Then why replacing `for (z = 0; c[z] != '0'; ++z)` with `for (z = 0; c[z] != '\0'; ++z)` gave me an AC?

Uninitialized spaces are filled as zeroes. But, that means, integer zero, or the character whose ASCII value is zero (which, in fact, is `'\0'`). I believe, you already know that characters are represented by their ASCII codes. So, the character `'\0'` has an ASCII value of `0`, while the character `'0'` has an ASCII value of `48`.

`'\0'` is a special character used to terminate strings in C/C++. That is, the end of a string is marked by a `'\0'` (which, again I am repeating, is the character, whose ASCII value is zero). So, that explains the for loop.

And, when they say zero filles, it is actually meant as filled with the NULL character or the character whose ASCII value is zero.

1 Like

@tijoforyou Nice explanation. Thank you.

And yes, I knew that characters are represented by their ASCII values.