gpt4 book ai didi

c++ - 有什么办法可以在 C++ 中从用户那里获取数组大小?

转载 作者:行者123 更新时间:2023-11-30 04:35:14 25 4
gpt4 key购买 nike

我想知道是否有办法从用户那里获取维数组的大小?例如,对于矩阵的大小,我试图定义一个指针,并在获取矩阵的大小后生成内存。这是:`

void getMatrixSize(&int,&int);  
void makeMatrix(int **mat,int,int);
void getMatrixData(int **mat,int,int);

int matrixRow,matrixColumn;
int **A=NULL;

int main()
{
int row,column;
getMatrixSize(row,column);
makeMatrix(A,row,column);
getMatrixData(A,row,column);
}
getMatrixSize(int &row,int &column)
{
cout<<"Enter matrix row:";
cin>>matrixRow;
row=matrixRow;
cout<<"Enter matrix column:";
cin>>matrixColumn;
column=matrixColumn;
}
makeMatrix(int**mat,int row,int column)
{
int i=0;
mat=(int**)malloc(sizeof(int)*row);
if(mat==NULL)
{
cout<<"Error in getting memory";
exit(1);
}
for(i=0;i<row;i++)
{
mat[i]=(int*)malloc(sizeof(int))*column);
if(mat[i]==NULL)
{
cout<<"Error in getting memory";
exit(1);
}
}
}
void makeMatrixData(int**mat,int row,int column)
{
int i,j;
for(i=0;row>i;i++)
{
for(j=0;column>j;j++)
{
printf("m[%d][%d]=",i+1,j+1)
cin>>mat[i][j];
}
}
}

程序没有给出任何错误,但是当我运行它时,它不起作用。当我检查 debuge 时,我意识到它占用了 mat 而不是 A 的内存。
这是我的想法,无论如何都没有找到实现它的方法。我们有什么方法可以从用户那里获取维数组的大小吗?

最佳答案

除了使用 cin 和 cout 之外,您的代码读起来像 C,而不是 C++。

C++ 中没有数组大小的概念。你这样做的方式,你必须手动跟踪它,所以如果你打算用 C++ 编写矩阵代码,我建议你将 Matrix 作为一个类来实现,你认真考虑使用一个预先打包的容器对于您的值( vector 的 vector 很好,但您也可以使用单个 vector 、单个 valarray、来自 boost 的单个作用域数组)而不是自己管理内存(除非这是练习的目标,然后我建议您使用 new 和 delete 而不是 malloc 和 release。

我建议您使用预打包容器的原因是因为今天,您不必再担心 C++ 中的手动内存管理(许多提示内存泄漏在 C++ 中太容易创建的人不'意识到这一点)。这就是容器和智能指针的存在意义。

如果您想知道如何使用单个数组、单个 valarray 或 vector ,请阅读 valarray 和切片。这将为您指明正确的方向。

最后,如果您正在编写 C++,请不要执行 exit(1);你应该抛出一个异常(顺便说一下,这是你将通过使用预先打包的容器或 new 运算符得到的)。

快乐学习。

关于c++ - 有什么办法可以在 C++ 中从用户那里获取数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com