根本:数组不能拷贝,所以函数、返回值传递数组变量只能通过数组的指针或者是引用
一、函数返回值问题:指针(注:函数的返回值不能是数组,只能是数组的指针或是引用)
1、函数返回指针(包含动态数组)
声明:int * retArray(int i);
声明:int * retArray(int i)[10];函数返回数组,内部存储为基本数据类型的指针
注:此种定义是错误的,函数返回值为数组是被禁止的,只能通过数组指针或是引用
2、函数返回值是个固定大小的数组指针,数组存储的数据为基本数据类型
声明:int (*retArray(int i))[10] ; //此函数返回值为数组内部为int的10大小数组指针
定义:
声明:int *(* retArray(int i))[10];
定义:
1、函数返回引用
声明:int & retArray(int i); 此种声明只能用作返回基本数据类型的变量,不能返回数组
声明 int & retArray(int i)[10]; 函数返回数组,内部存储基本数据类型的引用
注:此种定义是错误的,函数返回值为数组是被禁止的,只能通过数组指针或是引用,且定义引用数组是错误的
2、函数返回值是固定大小的数组引用,数组存储数据为基本数据类型
声明: int (& retArray(int i))[10];
定义:
一、函数返回值问题:指针(注:函数的返回值不能是数组,只能是数组的指针或是引用)
1、函数返回指针(包含动态数组)
声明:int * retArray(int i);
声明:int * retArray(int i)[10];函数返回数组,内部存储为基本数据类型的指针
注:此种定义是错误的,函数返回值为数组是被禁止的,只能通过数组指针或是引用
2、函数返回值是个固定大小的数组指针,数组存储的数据为基本数据类型
声明:int (*retArray(int i))[10] ; //此函数返回值为数组内部为int的10大小数组指针
定义:
int (*retArray(int i))[10]
{
static int a[10] = {1};
return &a; //对于函数返回值固定[]元素数,需要返回&取地址符
}
3、函数的返回值固定大小的数组指针,数组存储的数据为基本数据类型的指针
声明:int *(* retArray(int i))[10];
定义:
int *(* retArray(int i))[10]
{
int *a[10];
for(int i = 0;i<10;i++)
{
a[10] = &i; //此处最好不要去局部变量的引用
}
return &a;
}
二、函数返回值问题:引用
1、函数返回引用
声明:int & retArray(int i); 此种声明只能用作返回基本数据类型的变量,不能返回数组
声明 int & retArray(int i)[10]; 函数返回数组,内部存储基本数据类型的引用
注:此种定义是错误的,函数返回值为数组是被禁止的,只能通过数组指针或是引用,且定义引用数组是错误的
2、函数返回值是固定大小的数组引用,数组存储数据为基本数据类型
声明: int (& retArray(int i))[10];
定义: