C - 二进制操作数无效 - (具有"int *"和"int **")


#include<stdio.h>
void main()
{
int a[]= {10,20,30,40,50,60};
int *p[]= {a,a+1,a+2,a+3,a+4,a+5};
int **pp=p;
pp++;
printf("%d,%d,%d", pp-p,*pp-a, **pp);
*pp++;
printf("%d,%d,%d", pp-p, *pp-p, *pp-p);
++*pp;
printf("%d,%d,%d", pp-p, *pp-a, **pp);
++**pp;
printf("%d,%d,%d", pp-p, *pp-a, **pp);
}

它显示了这个错误:

invalid operands to binary - (have 'int *' and 'int **')
printf("%d,%d,%d", pp-p, *pp-p, *pp-p);
invalid operands to binary - (have 'int *' and 'int **')
printf("%d,%d,%d", pp-p, *pp-p, *pp-p);

*pp-p,不能从int*中减去int**,因为它们是不兼容的类型。它应该是pp-p

另外请注意,为了使用printf打印地址,您应该将指针投射到void*并使用%p打印。

最新更新