Addition of two pointers in c or c++ not supported. why?

后端 未结 3 1919
南旧
南旧 2020-12-03 14:09

Why addition of two pointers not supported in c or c++.

When I do,

int *ptr,*ptr1;
int sum = ptr + ptr1;

C or C++ throws an error.

3条回答
  •  孤城傲影
    2020-12-03 14:40

    Pointers contain addresses. Adding two addresses makes no sense, because you have no idea what you would point to. Subtracting two addresses lets you compute the offset between these two addresses, which may be very useful in some situations.

    Edit: To address the common wish for finding the mid consider this (purely as an example):

    #include 
    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);
    }
    

    I am quite sure that you can always come up with an offset-computation which lets do what you want to achieve with addition.

提交回复
热议问题