C++函数定义中为什么可以使用取地址符"&"

今天看到一段代码(代码中的函数是在一个struct里的):

long long & operator [] (const int &c) {
		return a[c];
	}

我已经知道了这个函数会返回a[c]的地址,那么请问普通的函数可不可以使用"&"来进行返回地址的操作?就像下面这样(我编译会报错)

int test & (int i)
{
	return a[i];
} 

 

请问你上下两个a的类型分别是什么

理解有误吧,&在声明中不是地址,而是引用。也就是说,其实返回了一个a数组第c个元素的‘别名’,虽然效果上跟地址类似,但确实不是一个东西。

int test & (int i) -> int& test (int i)

&出现在左值作用是引用,注意你的a的作用域,不然可能出错。