~~函数如何返回一个char数组??

我函数里面产生了一个局部char数组

我想return这个数组,并赋值给char数组来接受他的数据。

如果是int类型的返回值,那太简单了,直接 Int i = f();

但返回值如何弄成是char数组?返回的是char数组,又要如何赋值接收?

把函数的返回值的类型设置为char类型的指针就可以了。
实例:
#include <iostream>
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掉了。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
不能使用局部数组,建议c++在函数中用new申请数组:
#include<stdio.h>
char *fun(int n)
{ char *p;
p=new char[n];
return p;
}
void main()
{ char *p=NULL;
p=fun(100); //申请100个char的数组
//使用这个数组
if ( p ) delete [] p; //最后别忘了释放
}本回答被网友采纳
第2个回答  2014-02-23
C/C++不能这样做。函数中的局部变量在函数退出后就消失了,若返回临时数组的指针,主调函数通过指针操作那块不受控制的内存,可能会产生严重后果。
第3个回答  2014-02-23
局部数组定义成static的,然后返回他的首地址就可以了,
复杂点的malloc空间拷贝好,返回malloc的空间地址,注意释放
第4个回答  2014-02-23

你都会用局部这个词了,这个局部char在函数退出后就会消亡

 

应该是调用者,来申请数组,把数组指针传给这个函数,由这个函数进行数组赋值

void DealWithStr(char *p)
{
    p[0]=1;

}
void main()
{
    char tmp[10];
    memset(tmp,0,sizeof(tmp));
    DealWithStr(tmp);
}

算是一个比较完整的例子了,申请了数组之后记得要自己对数组的值进行初始化,用memset

相似回答