首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递二维数组,用C语言工作,但不使用C++

传递二维数组,用C语言工作,但不使用C++
EN

Stack Overflow用户
提问于 2015-11-15 09:34:07
回答 2查看 1.8K关注 0票数 0

我将一个二维数组传递给标记函数。

代码语言:javascript
复制
void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){}

这段代码在C语言中可以很好地工作在代码块上,但是在C++中,我得到的错误如下:

代码语言:javascript
复制
prog.cpp:9:55: error: use of parameter outside function body before ']' token
 void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){
                                                       ^
prog.cpp:9:56: error: expected ')' before ',' token
 void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){
                                                        ^
prog.cpp:9:58: error: expected unqualified-id before 'int'
 void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){

我在这里做错什么了吗?我用int m给出了之前的列数,这是用C写的,而不是C++。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-15 09:37:23

您声明的数组参数是https://en.wikipedia.org/wiki/Variable-length_array,这些参数在C++中是不允许的。您必须以其他方式解决问题,例如使用模板、std::vectorstd::array

请记住,C和C++是两种非常不同的语言。C++可能最初是从C开发出来的,它们在许多方面共享语法,但是它们仍然是不同的语言,有不同的规则。

票数 3
EN

Stack Overflow用户

发布于 2015-11-15 09:37:06

只有C支持可变长度数组,C++不支持。C++标准规定数组的大小必须是一个常量表达式。

使用std::vector代替。声明应该是

代码语言:javascript
复制
void mark(int n, int m, int i, int j, vector< vector<int> > &canvisit, vector< vector<int> > &a);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33718225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档