如何将一个二维数组转化为一维数组元素呢

 我来答
珈极亦坐虎8219
2011-09-16 · TA获得超过372个赞
知道小有建树答主
回答量:714
采纳率:100%
帮助的人:429万
展开全部
假设你一维数组的大小为100
你需要把它拆分为20*5的一个二维矩阵。

不妨这样去实现:
假设一维数组的下标为X,可以把它在逻辑上转换为二维数组的下标:
m = X / 5
n = X % 5

比如你要找第一行第二列的元素,那在一维数组中就是a[1]
转化为二维坐标就是b[0][1]。

其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。

另外,C里边没有动态的二维数组,第二维的大小必须指定的。

问题补充:转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的操作,容易出问题。
打不出来中文直接打英文也行,我能看懂的,呵呵,谢谢啦

答:这个可以用宏来实现。举个例子说,比如你定义一个大小为100的一维数组A,然后你需要别人输入m=8,n=9(很多情况别人不可能按照你的意图来刚好用m和n整除一维数组的下表最大值,也就是说那个一维数组只需要保证足够大就可以了),然后你希望得到一个8*9的二维矩阵B[8][9]。

引用这个二维矩阵的时候,直接使用B[3][4]来引用第三行第四列的元素?
用宏定义(以下宏定义并没有上机调试,只是提供思路)
#define B[(x)][(y)] A[((x*m)+(y%n)]
解释一下:x*m,加入你需要B[3][4],那么就是对应一维数组第3*8+4%9=28个元素。
reverse_walker
2011-09-15 · TA获得超过590个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:464万
展开全部
int i[5][5] = { 1,2,4,5 } ;
int (&ref)[5] = i[0] ;//ref就是一维数组,指向第一行5个数据.i[1]第二行,类推
ref[0] - ref[4]是第一行,
ref[5]开始是第二行数据,但访问安全得靠你自己保障,别让数组超标了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
msyhenan
2011-09-15
知道答主
回答量:12
采纳率:0%
帮助的人:7.2万
展开全部
推荐你看C语言程序设计
追问
我们学的是VF,就快考试啦,谢谢解决哈
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式