C++初始化一个矩阵的函数中的疑问

来源:百度知道 编辑:UC知道 时间:2024/06/14 00:15:05
函数为:

void InitMatrix(int *array)
{
for(i=0; i<rows; ++i)
for(j=0; j<cols; ++j)
if(array)
mi[i][j] = *array++;
else
mi[i][j] = 0;
}

哪位高手可以帮忙解释一下这个函数具体是怎样工作的?特别不理解的是,
mi[i][j] = *array++ 为什么不是 mi[i][j] = *array
对于数组和指针的关系始终有点模糊的感觉
从书上的设计看,一个指向int的指针可以看做一个数组中的元素?而一个指向int的指针的指针为什么就可以看做一个矩阵中的元素?一个指向int的指针应该不可以看做一个数组吧?

哪位高人可以详细说明下关于数组和指针的关系?这个问题偶会额外加分的....

先佩服一下写这个代码的高手先
你这个代码是这样的
将array数组复制到m数组中
如果m数组比array数组大就以0补完
mi[i][j] = *array++;是先
mi[i][j] = *array;再
array++;的
你也可以写成
{
mi[i][j] = *array;
array++;
}
效果一样

首先我感觉这些概念确实比较绕,
“一个指向int的指针可以看做一个数组中的元素?”不是吧,其实这个指针可以看作是一个一维数组的名,比如说定义int a[10],a是数组的名,也可以看成一个指针--指向数组存放的首地址。
“而一个指向int的指针的指针为什么就可以看做一个矩阵中的元素?”所谓的矩阵也就是二维数组吧,int a[10][10],类似,a就是一个指向指针的指针,a[][]的每一行其实就是一个一维数组,a所指的指针指向数组的第一行的地址,a+1就是第二行的地址的指针,有点绕啊。
“一个指向int的指针应该不可以看做一个数组吧?”可以看成数组的名。