社区
C语言
帖子详情
实参是二位数组,形参如何表示
powerhome
2004-08-06 11:45:19
int Matrix[1000][1000] = {0},实参如何写呢?
如果用new, int (*Matrix)[1000],如何对其初始化为0,我不想用循环,
...全文
289
11
打赏
收藏
实参是二位数组,形参如何表示
int Matrix[1000][1000] = {0},实参如何写呢? 如果用new, int (*Matrix)[1000],如何对其初始化为0,我不想用循环,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wakinhui
2004-11-20
打赏
举报
回复
#define N 4
void rs(int *p)
{ int i,j;
for(i=0;i<N;i++)
for(j=0;j<i;j++)
{ t=*(p+i*N+j);
*(p+i*N+j)=*(p+j*N+i);
*(p+j*N+i)=t;
}
}
void main()
{ int a[N][N],i,j;
输入矩阵a;
rs(&a[0][0]);
输出矩阵a;
}
这样也可以阿!
antijpn
2004-08-06
打赏
举报
回复
另外,传递一个数组的引用也是可以解决问题的,不过这样就要求所有的维度都知道长度,而且还要求是内置的数组类型
antijpn
2004-08-06
打赏
举报
回复
对了,传递参数的时候不能像二楼那样写,必须写成
int[][1000]才行,因为数组作为参数必须给出除了第一维以外其他各个维的大小,否则无法进行定址,如果像二楼所说的传递了int**作为参数,还不知道你到时候按照数组的语法进行使用会产生怎么样的错误呢
antijpn
2004-08-06
打赏
举报
回复
如果初始化为0的话,就可以不用循环,可以使用memset来把所有的字节置0
int *ptr=new int[Len];
memset(ptr,0,Len*sizeof(int));//二维数组把第二维度的长度也要乘进去
kaphoon
2004-08-06
打赏
举报
回复
形参可以用void fun(int**)表示
不是说你初始化要不要循环
而是你要new个2维的,就必须要循环
梦想家大魔王
2004-08-06
打赏
举报
回复
全局变量会自动初始化为0,如果是局部变量,那么多的元素要初始化为0,除了循环我想不出还有别的方便的方法。
elvahuang
2004-08-06
打赏
举报
回复
呵呵
int Matrix[1000][1000]表示数组有1000个元素,每个元素又是1000个元素。
形参必需是int(*)[1000]
不要问为什麽,语言规范!
不用循环 怎麽完成?没试过,好像楼上有方法,不过即使循环又怎样?!晕
antijpn
2004-08-06
打赏
举报
回复
不是因为指针悬空,而是因为无法进行类型转换,如果按照楼上的方法使用动态分配,传递int**是可以的,而且使用上面也不会有问题
qingyuan18
2004-08-06
打赏
举报
回复
int *Matrix [1000]
这样定义是指针数组,用fun(int **)的方法指针已经悬空了。
可以这样:
int *Martrix[1000]
for(int j=0;j<1000;j++)
{
Martrix[j]= malloc(1000*sizeof(int));
memset(Martrix[j],0,1000);
}
antijpn
2004-08-06
打赏
举报
回复
楼上去编译这段代码
void func(int** p)
{
return;
}
void main()
{
int ia[1][1];
func(ia);
}
看看编译器告诉你什么结果
yswift
2004-08-06
打赏
举报
回复
void fun(int**) 没有问题
C++ Primer第四版【中文高清扫描版】.pdf
7.2.4
数组
形参
206 7.2.5 传递给函数的
数组
的处理 209 7.2.6 main:处理命令行选项 210 7.2.7 含有可变
形参
的函数 211 7.3 return语句 211 7.3.1 没有返回值的函数 212 7.3.2 具有返回值的函数 212 7.3.3 递归 216 ...
C语言中,二维
数组
如何作为
实参
传递
在刷leetcode题经常想用到二维
数组
的传递,但经常出现问题,然后上网搜索各种传递二维
数组
的方法如下: 定义二维
数组
的两种方法: 一:定义一个二维
数组
传递 二:用malloc分配一个堆空间 本质上,二维
数组
是...
数组
和指针的传参问题
数组
和指针的传参问题
数组
传参 一维
数组
传参 #include<stdio.h> void test(int arr[])//ok? { } void test(int arr[10])//ok? { } void test(int *arr)//ok? { } void test2(int *arr[20])//ok...
(二维
数组
)(指针)(函数
实参
)(函数
形参
)
【代码】(二维
数组
)(指针)(函数
实参
)(函数
形参
)
C语言:关于二维
数组
做
形参
二维
数组
的存储方式是和一维
数组
没什么区别,但是用二维
数组
做参数,它的
形参
该怎样写?要注意的是:函数中的
形参
其实就相当于一个声明,并不产生内存分配,
形参
的目的就是要让编译器知道函数参数的数据类型。 ...
C语言
69,377
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章