* is a right-to-left associative operator

In C and Objective-C, the operator `*` is a right-to-left associative operator: 
https://en.wikipedia.org/wiki/Operators_in_C_and_C++#Operator_precedence

Which means it should be next to the right element, not the left element. And easy way to understand the issue:

    char* a, b;

As `*` is a right-to-left associative operator, `*` applies to `a`, not `char` and we have:
 - `a` is an array of char
 - `b` is a char, not an array of char

To make it easier to apprehend, and to avoid mistakes when we want twice the same type, we should have:

    char *a, *b;

Right-to-left associativity for `*` is the same as the one for `!`. And you don't write:

    BOOL p =! q;

You write:

    BOOL p = !q;