Compiler Warning (level 1) C4047

'identifier1' : 'operator' : different levels of indirection from 'identifier2'

Indirection refers to accessing a variable through a pointer. Just as a pointer can refer, or point, to a variable (one level of indirection), a pointer can also point to another pointer that, in turn, points to a variable (two levels of indirection). Because two pointers that have different levels of indirection possibly refer to two different things (one could be pointing to a variable, while the other could be pointing to another pointer), the compiler issues warning C4047 whenever you include such pointers in an expression.

For example, the following code generates this warning but is compiled without change:

void main() {
    char **p;// two levels of indirection
    char *q; // one level of indirection
    p = q;   // warning C4047
}