C++ c++;,操纵指向数组第一个元素的指针

C++ c++;,操纵指向数组第一个元素的指针,c++,arrays,pointers,element,C++,Arrays,Pointers,Element,我已经编写了一个小代码来快速解释我的问题: #include<iostream> using namespace std; int main() { int a [10] = { 200, 60, 100, 70, 0, 0, 105, 400, 450, 30}; int *b = &a[0]; int *c = &a[9]; int *d = b+9; cout<<&a

我已经编写了一个小代码来快速解释我的问题:

    #include<iostream>
    using namespace std;

    int main()
    { int a [10] = { 200, 60, 100, 70, 0, 0, 105, 400, 450, 30};
      int *b = &a[0];
      int *c = &a[9];
      int *d = b+9;

      cout<<&b[9]<<endl
      <<c<<endl
      <<d<<endl;
    return 0;
    }
#包括
使用名称空间std;
int main()
{inta[10]={200,60,100,70,0,0,105,400,450,30};
int*b=&a[0];
int*c=&a[9];
int*d=b+9;
cout
  • b是整数*
  • b+9是整数*
  • *(b+9)是整数
  • b[9]为int(同上)
  • &b[9]是整数*
  • *(&b[9])是int
      • b是整数*
      • b+9是整数*
      • *(b+9)是整数
      • b[9]为int(同上)
      • &b[9]是整数*
      • *(&b[9])是int

      b[9]
      根据定义是
      *(b+9)
      。也就是说,数组运算符将索引和指针求和,然后取消对该指针的引用

      因此:


      都是正确的语句。

      b[9]
      根据定义是
      *(b+9)
      。也就是说,数组运算符将索引和指针相加,然后取消对该指针的引用

      因此:


      都是正确的语句。

      b[9]
      是数组的最后一个元素

      &b[9]
      是指向此元素的指针


      b+9
      相当于
      &b[9]
      表单。

      b[9]
      是数组的最后一个元素

      &b[9]
      是指向此元素的指针


      b+9
      相当于
      &b[9]
      表单。

      数组下标运算符包含一个解引用,这就是为什么需要使用运算符的地址再次获取指针的原因


      b[9]
      *(b+9)
      的定义相同。

      数组下标运算符包含一个解引用,这就是为什么需要使用运算符的地址再次获取指针的原因


      b[9]
      *(b+9)
      的定义相同。

      b[9]怎么可能是int&b[9]?如果在上面的脚本中替换它,b[9]和&b[9]是两个不同的东西。令人困惑的是,它是&b[9]指向原始数组a的最后一个元素,而不是b[9]。b[9]是int,&b[9]是int*;p[i]与*(p+i)相同。b[9]怎么可能是int[9] be int&b[9]?如果在上面的脚本中替换它,b[9]和&b[9]是两个不同的东西。令人困惑的是,它是&b[9]指向原始数组的最后一个元素a,而不是b[9]。b[9]是int,&b[9]是int*;p[i]与*(p+i)b[9]指向a[9]。b指向a[0],与b[0]一样。当你在指针上加一个下标时,下标会被加到指针上。当你加载指针时,这就是你使用运算符地址的时候。(只是为了进一步混淆,int*0[b]也指向a[0]。@PeteWilson:b[9]实际上并不指向任何东西,因为指针指向任何东西。b[9]指向a[9].b指向a[0],b[0]也指向a[0]。当您在指针上放置下标时,下标将添加到指针上。当您加载指针时,即使用运算符的地址。(只是为了进一步混淆,int*0[b]也指向a[0])@PeteWilson:b[9]没有真正指向任何东西,在某种意义上,指针指向事物。这就是我错过的。谢谢你澄清它。这就是我错过的。谢谢你澄清它。
      b[9] == a[9]
      b+9 ==  &(a[9])