C++ 从函数返回动态数组,并分配给合适的变量
我有以下功能C++ 从函数返回动态数组,并分配给合适的变量,c++,dynamic-arrays,C++,Dynamic Arrays,我有以下功能 char* readFile(const char *fileName){ std::ifstream file(fileName); char *str[50]; int count=0; if(file){ str[0] = new char[50]; while(file.getline(str[count], 50)){ count++; str[count] = new char[50];
char* readFile(const char *fileName){
std::ifstream file(fileName);
char *str[50];
int count=0;
if(file){
str[0] = new char[50];
while(file.getline(str[count], 50)){
count++;
str[count] = new char[50];
}
}
return str;
}
上一个函数的行为是:
- 逐行读取文本文件的内容
- 保存二维数组项中的每一行
- 然后返回动态2D数组
IMHO…尽管人们已经向您提出了建议/警告,您的函数头应该是
char**readFile(const char*fileName)
为了避免堆内存损坏,您应该声明指针数组,如下所示:
char **str;
str = new char*[50];
你可以这样做
int** createMatrix(int row , int column)
{
int **tem = new int*[row];
for (int i=0; i<row; i++)
{
tem[i] = new int [column];
}
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
tem[i][j] = 1;
}
}
return tem;
}
int main()
{
int row=5;int column=1;
int **arr=createMatrix(row,column);
for(int i=0;i<row;i++){
for(int j=0;j<column;j++){
cout<<arr[i][j];
}
cout<<endl;
}
}
int**createMatrix(int行,int列)
{
int**tem=新int*[行];
对于(int i=0),IUI当然可以分配一个数组并返回给调用方。我同意您通常不应该这样做,因为它会导致内存管理错误。除非这是一个受虐狂的练习,考虑一下一般的顺序:<代码> STD::向量行;而(STD::GETLINE(文件,行)行。