回 帖 发 新 帖 刷新版面

主题:[讨论]二维数组参数传递

求高手帮解决二维数组参数传递的问题。
二维数组做参数传递的时候,可以如下声明:
void func(int a[][3]);
但是有时碰到的情况是,数组的位数是动态生成的,所以网上建议这样写,
void func(int ** p, int n, int m);
但是程序还是会出错。如下为源代码:
---------------------------------
void func(int **p, int n, int m){
    for(int i=0; i < n; i++)
        for(int j=0; j < m; j++)
            p[i][j]=i+j; ///////调试通过,但执行时报错
    cout << p[1][2] <<endl;
}
void main(){
    int a[2][3];
    func((int **) a, 2, 3);
    int k;
    cin >>k ;
}
---------------------------------
VC 6.0编译器会弹出如下出错信息:"unhandled exception in XXX.exe:oxc000005:Access violatoin."
求高手指点!!!!!

回复列表 (共2个回复)

沙发

二级指针int **p并没有指向二维数组,是一个空指针,故调用p[i][j]时会报错,我没见过类似的写法,故这种方法我也不能实现

板凳


谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册