I am a teaching assistant of a introductory programming course, and some students made this type of error:
char name[20]; scanf(\"%s\",&name);
If You define an array like
char name[20];
name is implicitly convertible to char*, but &name is of the type char (*)[20] (a pointer to an array of 20 characters). The addresses are the same.
name
char*
&name
char (*)[20]
Check the address of (&name + 1). It differs form &name by the sizeof(char [20]).
(&name + 1)
sizeof(char [20])