【发布时间】:2021-03-08 14:55:42
【问题描述】:
我正在创建一个函数,它会给我一个矩阵的随机值。我知道如何在main 函数中实现它,但我想要一个单独的函数。我也尝试使用void 并且发生了同样的事情,并且我不断收到同样的错误。我是初学者,我知道这个问题与指针有关,但我仍然不知道我应该怎么做才能让它工作并修复它。我已经用 Google 搜索过了,但我无法完成这项工作。
#include<stdlib.h>
#include<iostream>
#include<time.h>
int row, coll;
int random(int *mat[])
{
srand(time(0));
for(int i=0; i<row; i++)
{
for(int j=0; j<coll; j++)
{
mat[i][j] = rand()%10;
}
}
}
main()
{
std::cin >> row >> coll;
int mat[row][coll];
random(mat);
}
【问题讨论】:
-
std::cin >> row >> coll; int mat[row][coll];-- 这不是有效的 C++。 C++ 中的数组的维度必须由编译时表达式指定,而不是运行时变量。 -
数组不是指针。特别是,数组数组不是指针数组。
-
它也不是有效的 C,因为尽管 C 有可变长度数组(作为可选功能),但它没有 iostream。
-
无法完成。
random在编译时必须知道除了最外层之外的所有维度。这对于可变长度数组是不可能的。他们are not included in Standard C++ 的众多原因之一。我可以推荐a simple matrix class backed by astd::vector吗? -
@klutt 你不必说服我。我是
std::vectorfanboy,我从不写任何 C ;)
标签: c++ multidimensional-array parameter-passing implicit-conversion function-definition