作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/06 08:50:39
如何定义一个函数 返回一个指向数组的指针
如何定义一个函数 返回一个指向数组的指针
“指向数组的指针”是一个有点麻烦的东西,例如
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函数执行完后就会被释放掉
一般要“返回数组”的函数都会使用动态内存分配来开辟一段连续的空间,然后把这个内存段的首地址返回(而不是返回“指向数组的指针”).这样的操作比较简便,是通用的办法
再问: a不已经是地址了吗 为什么还加一个&
再答: a是“数组首元素的地址”,&a才是“指向数组的指针”,看以下说明: int a[10]; int *p1 = a;//p1被初始化为数组第一个元素的地址(即&a[0]) int (*p2)[10] = &a;//p2被初始化为指向数组的指针