I believed that in the following code, C \"automatically casts 17 to an int *\" which, as someone recently pointed out (but did not give the reasons as to why),
Yes, the casting is implicit in C, although many (all?) compilers give a warning. In C++, no implicit conversion is performed from int to int*, so the explicit cast is required.