@glaskows As I understand it: int * is the type of x_ptr, but int is the type of *x_ptr. The declaration, syntactically, is not the type int * juxtaposed with x_ptr, but the type int juxtaposed with the declarator *x_ptr. This is most clearly demonstrated by multiple declarations with one type: int *a, b means a is a pointer, b isn’t. The type int * is an independent construction formed by omitting the identifier from the declarator.