首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于动态二维数组的几个小问题

2013-03-27 
关于动态二维数组的几个问题申请一个10*10的动态二维数组int main(){int **pptr 0pptr new int *[10]

关于动态二维数组的几个问题
申请一个10*10的动态二维数组


int main()
{
        int **pptr = 0;
        pptr = new int *[10];
        for (int i=0; i<10; i++)
        {   
                pptr[i] = new int[10];
        }

        return 0;
}


以上写法是否正确?

如果令pptr[11][1]取值,因为越界运行时报段错误,这个可以理解,不过pptr[1][11]这样在运行时就不会报错。这个是为什么?为什么同样是越界,一维会报错,二维就没有提示呢?

谢谢各位指点 动态二维数组
[解决办法]
C++并不会检查数组越界,运行时出错是因为读该内存的时候出错,所有越界行为属于未定义
[解决办法]
因为越界,只管理一维,只有pp[i][j] i不越界即可!!
虽然这个是没有提示错误,你打印下就能明白了。。
for (int i=0;i<10;i++)
{
for (int j = 0;j<10;j++)
{
pptr[i][j] = (i+1)*(j+1);
}
}
for (int i=0;i<10;i++)
{
for (int j = 0;j<10;j++)
{
cout<<pptr[i][j]<<"\t";
}
}
cout<<pptr[1][11]<<"\t";

热点排行