首先要 分清, 是在 声明中 还是在语句中。
声明中,例如:
int a=1, b=2;
int *p, *q; // 声明 *p 和 *q 是指针,用于指向 int 型数据。
p=&a; q=&b; //语句, p 和 q 是指针 指向的数据 的地址,p 指向 a, q 指向 b.
if ( p < q) printf("...."); // 语句, p 和 q 是 "地址", 地址大小的比较。即 &a,&b 的比较。
若是 if ( *p < *q) printf("...."); // 语句, *p 和 *q 是 "数值“ 的比较,即 a,b 的比较,现在 a=1,b=2。
即,语句中 有星号的是 数值,没星号的是地址。
你的2道题里,p,q 是 地址。是地址值的比较。