C++ 在数组中使用指针
我正在尝试使此代码正常工作:C++ 在数组中使用指针,c++,arrays,pointers,multidimensional-array,C++,Arrays,Pointers,Multidimensional Array,我正在尝试使此代码正常工作: #include <iostream> void reset_2D_dbl_array(double **p, int nrows, int ncols); int main(){ double big_matrix[10][10]; reset_2D_dbl_array(big_matrix,10,10); std::cout << big_matrix[0][0]; std::cin.ignore()
#include <iostream>
void reset_2D_dbl_array(double **p, int nrows, int ncols);
int main(){
double big_matrix[10][10];
reset_2D_dbl_array(big_matrix,10,10);
std::cout << big_matrix[0][0];
std::cin.ignore();
return 0;
}
void reset_2D_dbl_array(double **p, int nrows, int ncols){
int n = nrows * ncols;
while(n-- > 0){
**p++ = 0.0;
}
}
#包括
无效重置\u 2D\u dbl\u数组(双**p、整数nrows、整数ncols);
int main(){
双大_矩阵[10][10];
重置2D_dbl_阵列(大矩阵,10,10);
标准::cout(0){
**p++=0.0;
}
}
我不明白它为什么不起作用
我从新书《不耐烦的人的C++》中获取了代码,但它仍然不起作用
我想在函数中使用两个“at”符号来更改没有索引和方括号的值
编辑:
更多信息请看我的第二条评论,谢谢:)
编辑2:
粘贴了错误的代码:),因为双指针不会衰减为双数组。只需向函数传递一个双数组:
void reset_double_array(double p[][10], int nrows, int ncols);
为了解释为什么会这样,请
看到你已经标记了你的问题C++,你应该真正使用“代码> STD::vector < /代码>来代替你的矩阵,并且为指针和原始数组节省麻烦。
STD::CUT
这里不太清楚你在做什么。看起来好像您正在尝试设置每行的第一个双精度值。在这种情况下,应采取以下措施:
void reset_double_array(double **p, int nrows, int ncols)
{
double* val = *p;
while(nrows-- > 0)
{
*val = 1.0;
val += ncols;
}
}
您需要将其作为
double
数组传递
void reset_double_array(double p[][10], int nrows, int ncols){
for(int i=0;i<nrows;i++)
for(int j=0;j<ncols;j++)
p[i][j]=1.0;
}
void reset_double_数组(double p[][10],int nrows,int ncols){
对于(int i=0;i,可以使用如下指针:
无效重置\u 2D\u dbl\u数组(双*p、整数nrows、整数ncols)
{
....
}
然后,当您通过实际二维阵列时:
重置2D_dbl_数组(&big_矩阵[0][0],10,10)
或
reset_2D_dbl_数组(big_matrix[0],10,10);同样,“矩阵”或“双数组”是用户的抽象,内存或C中没有“双数组”这样的东西@内存中的所有东西都是1维的。@ C++中的USER 24857 C++,这个问题被标记为语言,内存是一个内存位置集群的群岛。@ R.M. MtTiHufnnand,你是什么意思?内存中有很多跳跃?2D内存?@ USER 24857“一个大数组”.@ r.MaTiHHOFFNANDENS,我在哪里可以……我也不认为POD数组是C++世界的C++数据结构,更像是一个C语言数据结构,它与旧语言兼容,这是问题所在,在我从新的一本书中学习到的(C++ 11也是如此),它们不使用任何方括号,只是“AT”。“像我一样签名…(我不是想按enter lol)他们像传递正则变量一样传递它,然后像指针一样使用它..关于cout,我忘了我已经修好了,我给你的代码错了,对不起lol..你不能不耐烦,你是个程序员。lol,这本书就是这么叫的:P我不是不耐烦的:P
std::cout << big_matrix[9][9]; //instead of std::cout << big_matrix[9];