[问题] 关于二维阵列

楼主: MaxHaru (懂得放手..才是王道)   2016-12-04 14:36:58
请教一个关于阵列的问题, 说明如下,
我有两个二维阵列
unsigned char arr1[2][2] = {{1,2},{3,4}};
unsigned char arr2[2][2] = {{5,6},{7,8}};
我想用另一个阵列将两个二阵列的位置存起来, 该如何宣告变量型态
unsigned char**pArr[2] = {arr1, arr2}; //不确定这样宣告对不对..
我想再用一个变量将pArr中的二维阵列位址取出来并当二维阵列一样使用
unsigned char**Var; //不确定是否正确
Var = pArr[0]; //不确定是否正确
printf("%d", Var[0][0]);
以上, 我有试着在Ideone上跑跑看( http://ideone.com/jUPUp9 )
compile没有问题, 但执行时会出现误会讯息..
请问是否哪个地方用错了?
谢谢..
作者: chuegou (chuegou)   2016-12-04 18:41:00
会阿 心理会变强(笑)
作者: hunandy14 (Charlott.HonG)   2016-12-04 19:00:00
https://goo.gl/O5cq5r你是想要这样吧~不过我觉得优化一下会比较好~~
作者: stupid0319 (征女友)   2016-12-04 16:45:00
好吧,多写一些自虐的CODE真的会变强吗XD
作者: CoNsTaR ((const *))   2016-12-04 16:41:00
楼上 我是觉得原 Po 如果借由这个例子能弄清楚阵列和指标的关系其实是满值得的啦
作者: stupid0319 (征女友)   2016-12-04 16:35:00
明明就直接用arr1,arr2存取就好了,为什么要化简为繁?
作者: CoNsTaR ((const *))   2016-12-04 16:30:00
可以做到,但是没有你想像的那么方便 建议先学资料结构T a[M][N], b[M][N];T* p[M] = {a[0],..,a[M-1]};T* q[M] = {b[0],..,b[M-1]};T** r[2] = {p,q};
楼主: MaxHaru (懂得放手..才是王道)   2016-12-04 16:16:00
预期做法是"pArr[n]"这个阵列存的是2维阵列的位址..Var从pArr[n]取出来之后, 可以像Var[1][2]来使用二维阵列
作者: CoNsTaR ((const *))   2016-12-04 16:13:00
T a[N], b[N];T* p[2] = {a,b};你是想把两个阵列当作一个用,像这样?
作者: DrizzleX   2016-12-04 16:06:00
疴 你是想两个绑在一起吗 那试试看struct
楼主: MaxHaru (懂得放手..才是王道)   2016-12-04 15:37:00
谢谢大家的回应, 因为实际应用上2维阵列还蛮多的,又需要透过index去调用, 所以须要用一个阵列来处理,请问一下有其它的方法可以做到类似的功能吗?
作者: steve1012 (steve)   2016-12-04 15:18:00
喔喔我错了Qq我只是在想要是你是在用pointer 模拟的话做的到 但就不是阵列
作者: CoNsTaR ((const *))   2016-12-04 15:15:00
13 戒之 12 不管几维阵列都是一个 starc/c++ 的阵列和 Java 的不一样
作者: stupid0319 (征女友)   2016-12-04 15:07:00
用双重指标来存取二维阵列?别浪费生命了......阵列跟指标还是有所不同的,不能这样搞
作者: steve1012 (steve)   2016-12-04 15:14:00
不能?
作者: steve1012 (steve)   2016-12-04 14:58:00
要三个星星你把pArr改三个星星呃然后前面也要改
作者: stupid0319 (征女友)   2016-12-04 14:45:00
用错了,直接arr1,arr2来存取就好了XD,下面通通删掉

Links booklink

Contact Us: admin [ a t ] ucptt.com