c++将automatrix传递给函数
c++ pass auto matrix to function
可能重复:
如何在C++中使用数组?
我有个问题。我必须使用autodarray(矩阵)。
const int size_m=10;
const int size_n=10;
void process(int *x)
{
//i can pass array, all is well, i work as with dynamic allocated array
for(int i=0;i<size_m;scanf("%d",&x[i]),i++);
}
void input_m(int **x)
/*
mistake is here,
a cause of my problem that i'm trying to work with matrix allocated in stack(auto matrix,local) as with dynamically allocated matrix.
i receive error like this : "cannot convert ‘int [100][100]’ to ‘int**’ in assignment" how should i pass it?
*/
{
for(int i=0;i<size_m;i++)
for(int j=0;j<size_n;j++)
scanf("%d",&x[i][j]);
}
int main()
{
int x[size_m];
input(x);
int matr_x[size_m][size_n];
input_m(matr_x);
return 0;
}
谢谢!它有效。。它是如此简单,像往常一样)
const int sizem=3;
const int sizen=3;
void _input(int x[sizem][sizen])
{
for(int i=0;i<sizem;i++)
for(int j=0;j<sizen;x[i][j]=1,j++);
}
int main()
{
int m=10,n=10;
int x[sizem][sizen]={{1,2,3},{5,7,4}};
_input(x);
for(int i=0;i<sizem;i++)
{ for(int j=0;j<sizen;printf(" %d",x[i][j]),j++);
puts("");
}
puts("");
return 0;
}
您的二维数组与您编写的函数不兼容,原因是C.中内存工作的基本原因
当您编写int matrix[size_m][size_n]
时,您告诉编译器您想要一个sizeof(int)*size_m*size_n
字节块,并且您打算在其中存储整数。
当您编写int ** x
时,您告诉编译器x
是一个指向整数的指针。如果要将x
用作二维数组,则x
不仅应指向一个指针,还应指向指针数组中的第一个指针,即包含矩阵每行指针的连续内存区域。但是在你发布的程序中,没有任何这样的指针数组。
由于您在编译时知道矩阵的维度,因此可以通过将x
的类型更改为int x[size_m][size_n]
来解决此问题。更好的是,制作一个typedef:
typedef int MyMatrix[size_m][size_n];
void input_m(MyMatrix x){ ... }
int main()
{
MyMatrix matr_x;
...
}
首先,看看这个问题的答案。如果将void input_m(int **x)
更改为void input_m(int x[size_m][size_n])
(假设size_m
和size_n
都是常量),则应该编译代码。请注意,正如我链接到的问题中所述,"通常,要将2D数组传递给函数,您需要为除第一个维度之外的所有维度指定数组维度。"
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- c++将automatrix传递给函数