为什么指针算术在int *&之间起作用? int *仅用于减号而不是加号?

时间:2017-12-13 01:25:09

标签: c pointers

我似乎无法理解为什么我会收到此错误。对我来说,减法效果很好(产生-3)似乎很奇怪,而加法会给我一个错误。

为什么会这样?,不应该添加返回(0x00000001 + 0x00000002 = 0x00000003)?

#include <stdio.h>

int main()
{
    int* x = NULL;
    int* y = NULL;

    // error: invalid operands to binary + (have ‘int *’ and ‘int *’)
    int z = &x[0] + &x[3];

    // but this works fine
    int z = &x[0] - &x[3];

    printf("0x%08x\n", x);
    printf("0x%08x\n", &x[0]);
    printf("%d", z);

    return 0;
}

0 个答案:

没有答案