社区
C语言
帖子详情
怎样传递一个二维数组?
Alexeyomux
2001-12-08 07:17:55
有一二维数组int array[9][9]和一函数void fun(int par),现要将数组array
传入fun中去处理。如果借助参数par,则请各位指教:1。如是想用传址使用的方案,参数par应该用怎样的形式;2。如是想用传值使用的方案,参数par的形式又怎样?
我用int** par这样的形式作形参,数组名array做实参,编译器却不认可?为什么?
先谢了!
...全文
225
9
打赏
收藏
怎样传递一个二维数组?
有一二维数组int array[9][9]和一函数void fun(int par),现要将数组array 传入fun中去处理。如果借助参数par,则请各位指教:1。如是想用传址使用的方案,参数par应该用怎样的形式;2。如是想用传值使用的方案,参数par的形式又怎样? 我用int** par这样的形式作形参,数组名array做实参,编译器却不认可?为什么? 先谢了!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Alexeyomux
2001-12-08
打赏
举报
回复
抱歉,分加少了(一开始没注意看到可以给贴子加分,因为是第一次),现在又不能再加了,下次一定加倍感谢。谢谢!
xboy
2001-12-08
打赏
举报
回复
用**p并不能得到二维数组的头指针!
可以用如下方式:
fun (int par[9][9]);
fun (int par[][9]);
fun (int (*par)[9]);
如果一定要用**p那么用new开辟空间好啦:
*p=new int[n];
int arr[n][n];
p=arr;
.
.
.
:
delete []*p;
JiangJiayan
2001-12-08
打赏
举报
回复
据The C Programming Language中的说法:
当向一个函数传递多维数组时,“一般而言,除第一维可以不指定大小外,其余各维都必须明确指定大小”。
对于上例:
1)void fun (int par[9][9]);
或 void fun (int par[][9]);
或 void fun (int (*par)[9]);
都可以(对编译器而言都一样)。
2)由于C对数组的顺序存储特性,实际上可以通过降维来访问原数组。
void fun (int *par);
再通过与楼上相似的方法处理。
eastsun
2001-12-08
打赏
举报
回复
很简单,你先强制转换(先做一个结构,这个结构中包括数组的信息,将这个结构的地址指针强制转换为一个int),在使用的地方,再强制转换回去。
kingfish
2001-12-08
打赏
举报
回复
传地址,行,列
void fun(int *p,int h,int v)
{
int i=3;
int j=2;
*(p+v*i+j)=100; //访问任意一个par[i][j]
}
使用
int par[4][5];
fun(&par[0][0],4,5);
jkjium
2001-12-08
打赏
举报
回复
函数fan的形参这样定义(int **par)就行了。
GZCompiler
2001-12-08
打赏
举报
回复
数组就是保存在内存中的一段数据,作为参数传给函数无非就是想让函数访问这段内存,
传地址吧,最好附上数组的维数。
wyzegg
2001-12-08
打赏
举报
回复
应该传一个指针和两个维数
cBeginner
2001-12-08
打赏
举报
回复
是数组的话,传值和传址的方式是一样的。
void fun(int par[][]) 或者 void fun(int [][])都可以。
C++
二维数组
参数
传递
的实现方法
C++
二维数组
参数
传递
的实现方法 int a[2][2]={ {4, 6}, {9, 11} }; 我定义了这样
一个
数组,我想把这个数组作为参数,
传递
到
一个
函数中,并要在函数中能引用该
二维数组
的元素,我该怎么做? 第一种方式是直接
传递
二维数组
,但是必须标明第二维的值,因为如果只是
传递
a[][],编译器无法分配这样的数组,所以要这样传int a[][3] 第二种方法是
传递
指针数组方式,即int (*a)[3] 第三种是
传递
指针方法。 具体实施见代码: 方法1:
传递
数组,注意第二维必须标明 //
二维数组
传参问题示例 #include using namespace
参数
传递
二维数组
今天在论坛上有朋友提问:声明函数如下void function(int** pInt),意图是想参数
传递
一个
二维数组
。于是就定义了
一个
二维数组
,比如 int[1][1],然后调用函数。结果如何?当然是失败了,编译器提示:cannot convert parameter 1 from 'int [1][1]' to 'int **',参数类型不匹配。上述过程我自己也试了,当然不匹配,类型完全不一样嘛。然后我就想了:如果要将
一个
二维数组
作为形参,那么函数该怎么声明? 来看《C++ Prim
C/C++如何
传递
二维数组
?
用
二维数组
作为参数
传递
(用
二维数组
处理矩阵),但是希望接受
传递
二维数组
参数的函数可以处理任意维度的数组(希望矩阵的行数和列数都是不固定的)。 【以下转帖】 ---------------------------------------------------------------------------------------------- 但一般
传递
二维数组
的基本规则好像是这样的:可
【C++】函数如何
传递
二维数组
?
二维数组
是怎么通过指针进行
传递
?
举例子: int data[3][4] ={ {1,2,3,4} , {5,6,7,8} , {9,10,11,12} }; int total = sum(data,3); 请自己先尝试写出sum函数的原型 思考过后,请继续看下面详细分析: data 是
一个
数组名,该数组有3个元素,第
一个
元素本身又是
一个
数组,有4个int 值组成。 因此,data的类型是指向4个int组成的数...
向函数
传递
一个
二维数组
(指针
传递
)
二维数组
的指针
传递
法 很多时候我都是直接通过传入
一个
固定的数字来
传递
一个
二维数组
, 比如这样子定义函数intfun(inta[][3],intn) 调用函数是fun(a,n); 这样子调用的
二维数组
只能是固定已经知道的,不够灵活性。 以下介绍一下通过指针直接随意设定的
二维数组
; 定义函数是intfun(int**a,intn) 调用函数也是...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章