如何定义一个函数 返回一个指向数组的指针

2025-03-01 06:57:40
推荐回答(5个)
回答1:

“指向数组的指针”是一个有点麻烦的东西,例如
int a[7];
指向数组的指针要这样定义:int (*p)[7];这个p是一个指针变量,专门用来指向“包含7个int元素”的数组,可以这样为p赋值:p=&a;。由此也可以看出,楼上说的是错的。正确的应该是这样:
typedef int(*TYPE)[9];
TYPE fun()
{
int a[9];
TYPE p=&a;
return p;
}
可见此法限制太多,使用太复杂。而且,最关键的问题是:这个数组是一个局部数组,它占的内存在fun函数执行完后就会被释放掉

一般要“返回数组”的函数都会使用动态内存分配来开辟一段连续的空间,然后把这个内存段的首地址返回(而不是返回“指向数组的指针”)。这样的操作比较简便,是通用的办法

回答2:

自定义一个函数,返回指向char类型数组的指针如下:
char* MultMatrix( )
{
char*M = new char[4];
M[0]='a';
M[1]='b';
M[1]='c';
M[3]='d';
cout << M[0] << " " << M[1] << endl;//输出返回前的数组
cout << M[2] << " " << M[3] << endl;
return M;
}
将这个函数放在程序中运行,如实例。
实例:
#include
using namespace std;
char* MultMatrix( )
{
char*M = new char[4];
M[0]='a';
M[1]='b';
M[1]='c';
M[3]='d';
cout << M[0] << " " << M[1] << endl;//输出返回前的数组
cout << M[2] << " " << M[3] << endl;
return M;
}
int main()
{

char *M = MultMatrix();
cout << M[0] << " " << M[1] << endl;//输出返回后数组
cout << M[2] << " " << M[3] << endl;
delete[] M;
return 0;
}
运行结果:
a b
c d
a b
c d
没有问题,new的空间也delete掉了

回答3:

#define _TYPE int
_TYPE a[10];

_TYPE* Fun(_TYPE array[ ]){
_TYPE (*pa)[10] = array;

return pa;
}
Fun(a); //调用
//就得到一个指向_TYPE(此例为int)类型名为a的数组的指针了。

回答4:

int *fun()
{
int a[N];
int *p=&a;
return p;
}

回答5:

int * (*func)[10](int)