Answer : This is not how you initialize an array, but for:    The first declaration:   char buf[10] = "";   is equivalent to   char buf[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};  The second declaration:   char buf[10] = " ";   is equivalent to   char buf[10] = {' ', 0, 0, 0, 0, 0, 0, 0, 0, 0};  The third declaration:   char buf[10] = "a";   is equivalent to   char buf[10] = {'a', 0, 0, 0, 0, 0, 0, 0, 0, 0};    As you can see, no random content: if there are fewer initializers, the remaining of the array is initialized with 0 . This the case even if the array is declared inside a function.  Edit: OP (or an editor) silently changed some of the single quotes in the original question to double quotes at some point after I provided this answer.    Your code will result in compiler errors. Your first code fragment:   char buf[10] ; buf = ''   is doubly illegal. First, in C, there is no such thing as an empty char . You can use double quote...