首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C& c++中将二维数组传递给函数

在C& c++中将二维数组传递给函数
EN

Stack Overflow用户
提问于 2019-11-23 03:01:00
回答 1查看 109关注 0票数 2

我为C& C++尝试了相同的程序,即将2D数组传递给函数。下面的程序在C语言中工作,但在C++中不工作,请解释为什么?

在C中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h> 
void pass(int n, int arr[][n])  // or void pass(int n, int (*arr)[n])
{
printf("%d",arr[0][0]);
//.....
}

int main()
{
int n;
scanf("%d",&n);  
int arr[n][n];
arr[0][0]=0;
pass(n,arr);
return 0;
}

在C++中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
using namespace std;
void pass(int n, int arr[][n])  // or void pass(int n, int (*arr)[n])
{
cout << arr[0][0];
//.....
}

int main()
{
int n; 
   cin >> n;
int arr[n][n];
arr[0][0]=0;
pass(n,arr);
return 0;
}

3:29:错误:在“]令牌空传递( int n,int arr) //或void (int n,int (*arr)n)之前使用参数外部函数体

6:9:错误:“arr”未在此范围内声明cout << arr;*

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-23 03:05:27

这些陈述

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int n;
scanf("%d",&n);  
int arr[n][n];

提供可变长度数组的声明。可变长度数组是取决于运行时值的数组维数。编译器可以有条件地支持C的一个特性。

在C++中没有这样的标准特性。因此,C++编译器发出一个错误。在C++中,数组的尺寸应该是编译时常数.尽管有些C++编译器可以有自己的C++语言扩展,但它可以包含可变长度数组的特性。

在C++中,使用类模板std::vector而不是可变长度数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59006901

复制
相关文章
C语言中将二维数组作为函数参数来传递
#include <stdio.h> void func(int n, char  str[ ][5] ) {  int i;  for(i = 0; i < n; i++)   printf("/nstr[%d] = %s/n", i, str[i]); }
Twcat_tree
2022/11/30
2K0
c语言二维数组传参数_c语言数组传参
其实声明,定义是一样的。因此,只写声明。 同时,把元素外层*()剥去就代表地址。因此只写元素。 最后有总结。
全栈程序员站长
2022/11/15
2.8K0
【进阶指针二】数组传参&指针传参&函数指针&函数指针数组&回调函数
https://blog.csdn.net/qq_64428099/article/details/125011487
MicroFrank
2023/01/16
9070
C++小议二维数组
一、二维数组的介绍 当数组元素具有两个下标时, 该数组称为二维数组。 二维谁可以看做具有行和列的平面数据结构。 二、二维数组的定义 定义二维数组的形式:
老九学堂-小师弟
2019/10/09
1.1K0
C++二维数组 | 二维数组输出0-6
C++的二维数组是指具有两个下标的数组,有些数据要依赖于两个因素才能惟一地确定,因此才会引入二维数组。
小林C语言
2020/12/01
8100
C++二维数组 | 二维数组输出0-6
c++ sort 二维数组排序_二维数组升序排列
以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?
全栈程序员站长
2022/09/21
1.8K0
c++ sort 二维数组排序_二维数组升序排列
【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
此处遍历时 , 注意指针的步长 ,传入一个二级指针 char ** , 会出错 , 如果传入 二级指针 , array[i] 等同于 *(array + i) , array 的步长是 10 ;
韩曙亮
2023/03/29
1K0
【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )
【C++】动态开辟二维数组
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116522.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
4100
【C++】动态开辟二维数组
C++ 创建动态二维数组
在C++中创建数组的时候需要声明数组的长度,在声明一个二维数组的参数时,则至少需要确认第二维的长度,否则就无法完成编译。 为什么呢,我们可以用一张图来表示c++二维数组在内存中的表示就理解了。
雪碧君
2023/02/15
8340
如何在 Python 中将作为列的一维数组转换为二维数组?
数组是编程中的基本数据结构,使我们能够有效地存储和操作值的集合。Python作为一种通用编程语言,提供了许多用于处理数组和矩阵的工具和库。特别是,在处理表格数据或执行需要二维结构的操作时,将 1−D 数组转换为 2−D 数组的能力是一项基本技能。
很酷的站长
2023/08/11
4180
如何在 Python 中将作为列的一维数组转换为二维数组?
C/C++:使用二维数组名传参
在 C 中,当二维数组作为实参向形参传递时,参数会自动转化为指针类型,这时如果我们使用二维数组名传参,我们就不得不在函数形参中指明二维数组的第一维的长度,否则会导致编译错误。 这时如果想直接使用二维数组名传参,而二维数组却又是动态的,也就是二维数组的维度是不确定的,那我们得专门为不同维度长度的二维数组创建具有对应维度的形参的函数。这样太麻烦了。 而在 C++ 中,我们可以巧用模板来推导二维数组的类型(可以自动确定二维数组的维度长度),这样我们就可以做到直接使用二维数组名传参。借助了模板的类型推导功能,尽管是对于维度长度不同的二维数组,也可以使用同一个函数进行操作。
英雄爱吃土豆片
2020/10/29
1.9K0
C/C++:使用二维数组名传参
C++ QT4引用 _msize() 函数遍历二维数组
1、引用头文件 #include <malloc.h> 2、遍历二维数组 QString** str = new QString*[6]; int length = _msize(str) / sizeof(*str); qDebug()<<length; for (int i=0;i<length;i++){ str[i] = new QString[4]; str[i][0] = "port_name_en"; str[i
静谧星空TEL
2021/04/27
7030
C++ QT4引用 _msize() 函数遍历二维数组
C++二维数组sort排序问题
以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?
全栈程序员站长
2022/11/19
1.4K0
C++二维数组sort排序问题
C++通过array实现二维数组
但是,我们可以采用array来实现二维数组。这个在定义的时候就看上去没那么直观了。
灯珑LoGin
2022/10/31
2.1K0
C++中动态申请二维数组
今天有同门问到这个问题,写出来代码,进行记录。 使用new运算符进行动态申请: #include <iostream> using namespace std; void createArray(int size_m, int size_n) { float **arr = new float *[size_m]; for (int i = 0; i < size_m; i++) { arr[i] =new float[size_n]; for (int j = 0; j <size_
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.3K0
C++中动态申请二维数组
迟来的函数传参补充——传引用【引用调用】【c++】
函数传参,几乎一直在用简单的值传递,或者传指针,前者生成一个源结构的副本,后者链表或者树的时候用的比较多,本文补充到一个类似值传递的函数调用方式,函数定义的传参位置却是地址接收方式,这就是传引用。
来杯Sherry
2023/06/18
1780
迟来的函数传参补充——传引用【引用调用】【c++】
【小白学习C++ 教程】六、C++内置函数和函数传参
函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。
润森
2022/08/18
9380
【小白学习C++ 教程】六、C++内置函数和函数传参
c++入门教程–-14二维数组
例如: 一维数组 int a[5]={1,2,3,4,5}; 二维数组 int a[3][3]={ {1,2,3}, {4,5,6}, {7,8,9}};
全栈程序员站长
2021/04/07
2960
C++如何禁止函数的传值调用
按照参数形式的不同,C++应该有三种函数调用方式:传值调用、引用调用和指针调用。对于基本数据类型的变量作为实参进行参数传递时,采用传值调用与引用调用和指针调用的效率相差不大。但是,对于类类型来说,传值调用和引用调用之间的区别很大,类对象的尺寸越大,这种差别越大。
恋喵大鲤鱼
2019/02/22
2.4K0
点击加载更多

相似问题

如何在c++中将二维数组传递给函数

30

在c++中将二维动态数组传递给我的类的函数

32

在C++中将二维数组转换为函数

45

C++将二维数组传递给函数

40

将二维数组传递给C++函数

154
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文