通过C和C++中的二维数组的比较
comparison of passing 2d array in C and C++
在C 中
void foo(int size ,int a[][size])
{
printf("%dn", a[0][0]);
}
int main(int argc, char const *argv[])
{
int a[5][5] = {0};
foo(5, a);
return 0;
}
工作良好
但在C++中也是如此
void foo(int size, int a[][size])
{
cout << a[0][0] << endl;
}
int main(int argc, char const *argv[])
{
int a[5][5] = {0};
foo(5, a);
return 0;
}
不起作用。它给出了两个错误:
error: use of parameter ‘size’ outside function body
In function ‘void foo(...)’:
error: ‘a’ was not declared in this scope
有人能解释为什么会发生这种事吗。还请解释C或C++中任何与编译器相关的问题。。
C++不再是C的超集。您使用的是C可变长度数组功能,C++对此没有等效功能。这是非法的C++,坦率地说,这是非常糟糕的做法。使用std::array
和模板。这就是他们的目的。因为C数组太可怕了。
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中动态二维数组的访问冲突
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 如何为映射和priority_queue编写比较器,其中元素是二维数组
- 比较二维数组中的数字时的无限循环
- 如何在 c++ 中将一维数组中的值与二维数组中的值进行比较
- 将二维数组与 0 (c++) 进行比较
- 通过C和C++中的二维数组的比较
- 用一些逻辑比较二维数组,想不出来