函数调用数组索引

时间:2013-03-25 08:50:48

标签: c++

我遇到了一个带有函数调用的语句,以及下面提到的代码类型中的数组索引。在此语句中,s = o.init()[ - 1]返回a1 [0]的值。 我不清楚它是如何工作的概念,这个语句o.init()[ - 1]会做什么?,我知道0.init()将调用函数但是[-1]指定了什么? 请帮忙解决这个问题?

#include<iostream>
using namespace std;

class a
{
  char a1[1000];

  public:
  a()
 {
    a1[0]='a';
 }
  char* init()
  {
     cout<<"value of a1 is"<<a1<<endl;
     return a1+1;
  }
};

int main()
{
   a o;
  char s;
  s=o.init()[-1];


cout<<"value of s  is"<<s<<endl;
}

3 个答案:

答案 0 :(得分:2)

init()返回指向a1[1]的指针。 o.init()[-1];从该指针中减去1(因此,您得到指向a1[0]的指针)并取消引用它,然后得到a1[0]

答案 1 :(得分:1)

init返回一个char *,所以init()[ - 1]只会将指针一个字符串向后移入内存中。

想象一下:

char* arr = o.init();

然后:

arr--;

正如你所看到的,你的函数返回数组+ 1,所以为了取'a',或者更确切地说是第一个值,你必须向后退一步

答案 2 :(得分:1)

方法的返回值为char*。所以索引操作符从地址中减去一个,然后取消引用它。