"initialization" and "assignment", though having quite similar syntax, are two different things with different restrictions.
"Initialization" means to define the initial value of a variable right in the course of variable definition. Assignment, in contrast, assigns a value to a variable defined elsewhere in the program.
C does not support assignment of values to variables of type struct or array, but it supports initialization of variables of these types:
struct foobar three = {3, "three"} is an initialization, since the value is defined together with the variable definition. This is supported in C and in C++.
struct foobar three; three = {3, "three"} in contrast, is an assignment, because the variable is first declared, but the value is assigned in a separate statement. This is not supported in C, but would be supported in C++.