ok you know what's wrong with C.
` *foo = v; ` means "store the value v, which is an integer, at the address pointed to by foo".
` int *foo = v; ` means "declare the pointer foo and give it the initial value v, which is a pointer to an integer".
these may look almost the same but the meaning is completely different.