c++-在函数中返回数组的常用方法

一般应用情景:

在fun1函数中处理完某个数组之后,返回此数组到另一个函数中。

方法:

  • 使用全局变量:这种方法最方便,但此方法打破了函数间的通信及封装的思想,所以不推荐使用。

    比较简单,就不举例了;

  • 通过堆区动态开辟内存解决:C++中,我们通常用new来在堆区动态开辟内存,利用堆区“现用现开辟,用完手动收回”特点,实现灵活管理。是实际开发中的常用办法。

动态开辟空间在堆区,手动开辟,手动释放。
用new开辟
用delete释放
#include "pch.h"
#include<iostream>
using namespace std;

char* fun(char name[]) {
	char *dir;
	dir = new char[50];
	cout << "请输入图片存放路径: " << endl;
	cin >> dir;
	int k = 0;
	int nlen = strlen(name);
	int dlen = strlen(dir);
	for (int j = 0; j < nlen; j++) {
		dir[dlen] = name[j];
		dlen += 1;
	}
	dir[dlen] = '\0';
	return dir;
}
int main() {
	char *path;
	char name[] = "1.txt";
	path = fun(name);
	cout << "path:   " << path;
	delete path;
	return 0;

}

c++-在函数中返回数组的常用方法

  • 由调用方传入数组指针:此种方法不需要函数返回地址,而是在调用时直接传入数组地址,委托被调用方进行操作,由于此局部变量属于调用方本身,故即便被调用方结束内存释放,也不会被影响到该数组。
#include "pch.h"
#include<iostream>
using namespace std;

void fun(char name[],char path[]) {
	cout << "请输入图片存放路径: " << endl;
	cin >> path;
	int k = 0;
	int nlen = strlen(name);
	int dlen = strlen(path);
	for (int j = 0; j < nlen; j++) {
		path[dlen] = name[j];
		dlen += 1;
	}
	path[dlen] = '\0';
}
int main() {
	char path[50] ="\0";
	//cout << path << endl;  输出空行
	char name[] = "1.txt";
	fun(name,path);
	cout << "path:   " << path;
	return 0;
}

c++-在函数中返回数组的常用方法