C++ 二维数组传递

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:06:24
程序如下:

int connect[12][12]=
{
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0,-1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0,-1, 0, 1, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,-1, 0, 0, 0, 0, 0, 0, 0, 0,
0,-1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

int *con_flag[12];
for(int i = 0; i < 12; i++)
con_flag[i] = connect[i];
drawMap(&dc,p,3,con_flag,12);
drawMap()定义如下:
void drawMap(CDC *pDC, CPoint * p,int n,int **connect,int m);
有什么问题吗?编译过了,运行时为什么总是出错。
不是吧,con_fig[]是定义的一个指针数组,每一个指针都指向connect的一行阿。没错吧?
总之,我的目的是让drawMap()能顺利的使用connect数组

for(int i = 0; i < 12; i++)
con_flag[i] = connect[i];
这个有问题吧?
for(int i = 0; i < 12*12; i+=12)
con_flag[i] = connect[i];

你是要这个意思不?

================
补充:
是我看错了,出现了什么效果呢?看样子是没啥问题。...

看你这样子运行时似乎不应该出错啊.

如果出错,那么就不要改为指针数组了,直接传数组过去.
不过前提是你能修改drawMap函数定义...