为什么我们只能在指针算术中使用四个运算符(+
,-
,++
,--
)?它是否与内置硬件有任何关系,因为它处理地址?
由于数组使用相对寻址,因为我们增加地址以执行该操作,我认为这可能是仅使用这4个运算符的原因之一。
答案 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。