这是两个 int* 相减,按指针运算规则,结果要除以 int 大小,即 4 字节希望输出 -16 的话,可以先转 char* 再相减,因为 char 是 1 字节,也可以转为整型 size_t 或 unsigned long long(32 位是 unsigned int)再相减printf("%d\n",(char*)&p[4][2]-(char*)&a[4][2]); printf("%d\n",(size_t)&p[4][2]-(size_t)&a[4][2]);
这是两个
int*
相减,按指针运算规则,结果要除以int
大小,即 4 字节希望输出
-16
的话,可以先转char*
再相减,因为char
是 1 字节,也可以转为整型size_t
或unsigned long long
(32 位是unsigned int
)再相减