以下内容为大学期间学习C++语言总结的知识:
《C++》基础入门_01——数据存储,表示形式,基本运算
《C++》基础入门_02——面向对象的总体概括
《C++》基础入门_03——程序的开发过程
《C++》基础入门_04——四大语句
《C++》基础入门_05——函数详解篇
《C++》基础入门_06——面向对象的详述
《C++》基础入门_07——数据的共享保护:const
《C++》基础入门_08——利用数组实现对批量数据的处理
《C++》基础入门_09——指针和引用的讲解
《C++》基础入门_10——用户自定义数据类型详细篇
《C++》基础入门_11——友元的讲解
《C++》基础入门_12——类模板
《C++》基础入门_13——运算符的重载
《C++》基础入门_14——继承与派生
《C++》基础入门_15——多态性
《C++》基础入门_16——输入输出流详讲
《C++》基础入门_17——对象串行化
《C++》基础入门_18——异常处理
《C++》基础入门_19——命名空间
《C++》基础入门_20——文件操作
《C++》基础入门_21——在函数中返回数组的常用方法
一般应用情景:
在fun1函数中处理完某个数组之后,返回此数组到另一个函数中。
1. 使用全局变量
-
使用全局变量:这种方法最方便,但此方法打破了函数间的通信及封装的思想,所以不推荐使用。
比较简单,就不举例了;
2. 堆区动态开辟内存
-
通过堆区动态开辟内存解决: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;
}
3. 调用方传入数组指针
- 由调用方传入数组指针:此种方法不需要函数返回地址,而是在调用时直接传入数组地址,委托被调用方进行操作,由于此局部变量属于调用方本身,故即便被调用方结束内存释放,也不会被影响到该数组。
#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;
}