为什么我们在指针算术中只能使用四个运算符(+, - ,++, - )?

时间:2016-10-04 05:07:24

标签: c linux pointers operators

为什么我们只能在指针算术中使用四个运算符(+-++--)?它是否与内置硬件有任何关系,因为它处理地址?

由于数组使用相对寻址,因为我们增加地址以执行该操作,我认为这可能是仅使用这4个运算符的原因之一。

3 个答案:

答案 0 :(得分:1)

  

为什么我们在指针算术中只能使用四个运算符(+, - ,++, - )?

因为语言是以这种方式构建的。最常见的操作是迭代,这可能是允许这些操作符的原因。

至于为什么C语言是这样设计的理由,那里找不到多少。我检查了关于指针算法的C99基本原理,但它主要关注指针算法溢出的结果,并没有提到为什么/何时指针算法有意义。

  

它是否与内置硬件有任何关系,因为它处理地址?

不,它与此无关。地址只是数字。您始终可以将任何指针强制转换为uintptr_t,然后将其用作任何其他整数。

答案 1 :(得分:-2)

只要结果为int,就可以使用任何运算符。例如:

int A[10], i=5;
int *p;
p = A + (i/2);

答案 2 :(得分:-2)

简单因为C就是这样设计的。 +, - 可以简单地用于分别添加或减去两个指针(仅在地址处的值)。另一方面,增量和递减运算符即++和 - 可用于递增或递减指针。记住数据类型指针在这两个(++, - )运算符中起着重要作用,例如,如果你 定义一个* int类型的指针然后++会将内存地址增加2(因为大多数编译器中int的大小是2),所以 - 运算符也是如此,因为它会将它减少2。