问题的发现
比赛中,无法正确的讲不确定大小的二位数组作为参数传递。
解决:
Csdn:给出了三种确定大小的二位数组参数的传递方法
1,明确第二维度的大小如(a[][3])
2,指针参数(int *a[3])
3,指针的指针
详细可查看他人的相关文章.
未能解决不确定大小的二位数组方法
Chatgpt:同样给出方案,却有使用动态内存规划的数组
详细询问发现“C++标准并不支持变量长度数组,因此你需要使用动态内存分配”
学习动态内存分配
学习了动态内存释放
示例:
#include<iostream>
using namespace std;
void func(int** A, int m, int n) {
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++)
cout << A[i][j] << " ";
cout << "\n";
}
}
int main() {
int m, n;
cin >> m >> n;
// 动态分配一个二维数组
int** A = new int*[m];
for(int i = 0; i < m; i++)
A[i] = new int[n];
// 输入二维数组的元素
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
cin >> A[i][j];
// 调用函数
func(A, m, n);
// 释放动态分配的内存
for(int i = 0; i < m; i++)
delete[] A[i];
delete[] A;
return 0;
}
详细查看chatgpt记录
了解到智能指针的使用
std::unique_ptr<int> uniquePtr 智能指针的声明
Std::make_unique<int>(42) 创建;
Std::shared_ptr<int> sharedPtr 可共享一块内存的智能指针
将在最后一个被摧毁时,释放内存。
总结:
解决了二维数组参数问题,
了解到动态内存规划知识与智能指针。还是chatgpt厉害啊。