& pass es the starting address of the string in memory to the function. C is built on the RAM-Model (Random access machine). So you pass the address of the memory segment. the type defines the size of memory used.
so a char is usually 1 Byte long (not utf8) so what you say is:
that's why passing the value of it (no &) does not work. you want the program to write at the address / memory block reserved for your variable.
C and pointers gg have fun ^^
Neng Channa
South Korea/Web Developer/Billing