返回数组指针或引用。

法一:基本写法

int (&fun()) [5];

法二:类型别名

using arrT = int[5];

arrT& fun();

法三:尾置返回类型

auto fun() -> int(&) [5];

法四:使用decltype关键字

int a[5] = {1,2,3,4,5};

decltype(a) &fun();

eg:

int a[5] = { 1,2,3,4,5 };

decltype(a) &fun()
{
    return a;
}

int main()
{
 int (&c)[5] = fun();           //返回一个数组的引用时,要用一个指向含有5个整数的数组的引用来接受它(即类型哟啊相同)!注意指向数组的引用的声明格式。
 cout << "befor\t"<<c[1] << endl;
 cout << "transfomed!" << endl;
 c[1] = 10;
 cout << a[1] << endl;

return 0;
}

时间: 2024-10-11 06:21:02

返回数组指针或引用。的相关文章

C++ —— 返回数组指针的函数

基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含有10个整型元素的数组的指针 的函数为例. 法一:(不使用别名) int (*getCopyArr(int (&arr)[10]))[10] { int (*n)[10] = (int (*)[10])new int[10]; for (int i = 0; i < 10; i++) (*n)[i] = arr[i

声明返回数组指针的函数

时间:2014.05.18 地点:基地 ------------------------------------------------------------------------ 一.基本知识 常识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. typedet int arr[10]; //arr是类型别名,表示的类型含有10个整数的数组 上述语句等效于 using arr=int[10] 在来复习几个基础知识 int arr[10]; //arr是一个含有10个整数的数

返回类型和return语句:无返回值函数,有返回值函数,返回数组指针

重点: 1.return语句功能:终止当前正在执行的函数并将控制权返回到调用该函数的地方.Return语句两种形式: Return: Return expression; 2.返回void的函数不要求非得有return语句,因为在这类函数的最后一句后面会隐式地执行return. 3.Void函数如果想中间退出,可以使用return,作用相当于break,提前退出. 4.一个返回类型是void的函数也可以使用return expression形式,不过return语句的expression必须是另

数组、指针数组、数组指针、返回数组指针的函数的关系

直接上代码吧,解释说得很清楚了. // C++Primer.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <iostream> using namespace std; int (*function(int i))[10];//返回数组指针的函数 int main() { cout<<"数组.指针数组.数组指针.返回数组指针的函数:"<<endl<<endl; in

返回数组指针

如果我们想定义一个返回数组指针的函数,则数组的维度必须跟在函数的名字之后,然而函数名字之后的是形参列表,所以形参列表应该在数组的维度之前.返回数组指针的函数形式如下所示: Type (*function (parameter_list)) [dimension] 下面这个func函数的声明没有使用类型别名: int (*func (int i))[10]; C++ 11 中可以使用尾置返回类型 auto func(int i) -> int(*)[10]; 使用decltype 如果我们知道函数

C++数组指针的引用

数组指针的引用: int a[10]; int * const &b=a; int (&b)[10]=a 在把数组指针的引用传进去,也是以这样的格式,而且参数名可以和全局变量同名 引用不能为空,指针可以为空 "sizeof 引用"得到的是所指向的变量(对象)的大小,而"sizeof 指针"得到的是指针本身的大小 常量指针的引用不能赋值为别的指针,而指针变量的引用可以赋值为别的指针 引用必须初始化,而指针需要赋值为空以防野指针 存疑: 至于引用和指针的

动态创建二维vector数组+指针与引用的区别

二维vectorvector<vector <int> > ivec(m ,vector<int>(n));    //m*n的二维vector 动态创建m*n的二维vector方法一:vector<vector <int> > ivec;ivec.resize(m);for(int i=0;i<m;i++) ivec[i].resize(n); 方法二:vector<vector <int> > ivec;ivec

C++ 函数返回数组指针的问题

提醒一下:int *func(){int a[10] = {5};return a;}是非法的,因为 a 是局部变量,被申请在系统栈中,局部变量在函数返回后会被销毁,于是你返回的指针指向的是一段已经被系统回收的内存,这样的访问是非法的.int *func(){int *a = new int[10];a[0] = 5;return a;}是合法的,通过new运算符申请的一段内存是在系统堆上的,其销毁不受系统控制,而由程序员控制,所以如果在外部有int *ret = func(),将 ret 使用

5数组指针和引用:数组

数组 一维数组:数据类型  数组名 [常量表达式] 注意: 命名规则和变量名相同 数组后面一定是[],方括号内 是常量表达式 常量表达式表达元素的个数,即数组的长度 定义数组的常量表达式不能是变量 引用: 一维数组引用的一般形式:数组名[下标] 数组元素的下标起始值为0 初始化: 单个元素逐一赋值   a[10]=1;a[9]=100;...... 聚合方式赋值    int a[10]={1,2,.....10} ; int a[]={1,2,.....10}  ; int a[10]={1,