不支持在c或c ++中添加两个指针.为什么?

vig*_*abu 16 c c++ pointers

为什么在c或c ++中不支持添加两个指针.

当我做,

int *ptr,*ptr1;
int sum = ptr + ptr1;
Run Code Online (Sandbox Code Playgroud)

C或C++会抛出错误.虽然它支持,

int diff = ptr - ptr1;
Run Code Online (Sandbox Code Playgroud)

mid*_*dor 26

指针包含地址.添加两个地址是没有意义的,因为你不知道你会指出什么.减去两个地址可以计算这两个地址之间的偏移量,这在某些情况下可能非常有用.

编辑:为了解决寻找中期的共同愿望,请考虑这个(纯粹作为一个例子):

#include <stdio.h>
int main (int argc, char **argv){
    int arr[] = {0,1,2,3,4,5,6,7,8,9};
    int *ptr_begin = arr;
    int *ptr_end = &arr[9];
    int *ptr_mid = ptr_begin + (ptr_end - ptr_begin)/2;
    printf("%d\n", *ptr_mid);
}
Run Code Online (Sandbox Code Playgroud)

我很确定你总是可以提出一个偏移计算,让你可以通过添加来实现你想要的功能.

  • 知道其中之一是 NULL/nullptr 就意味着这是有道理的,这是不正确的。C 和 C++ 都允许 0 以外的常量作为 NULL/nullptr 的基础值。请参阅 /sf/ask/181944521/ 和 ​​/sf/ask/3786915611/ -保证为0 (2认同)