A "string" in C is the address of a character buffer.
You want scanf to fill the memory in the buffer, which is pointed to by the variable.
In contrast, an int is a block of memory, not an address. In order for scanf to fill that memory, you need to pass its address.