【发布时间】:2019-02-03 19:24:52
【问题描述】:
我有以下打印矩阵的函数:
void printMat(int* mat, int size)
{
int i;
for (i=0 ; i < size ; i++)
printf("%d ", mat[i]);
printf("\n");
}
现在,假设我有一个特定的矩阵,我想通过三种方式将它传递给上面的函数来实现它的打印:
void main()
{
int mat[2][3] = { {1,2,3}, {4,5,6} };
printMat((int*)mat, 6); //first way//
printMat((int*)mat+1, 6); //second way//
printMat(mat+1, 6); //third way//
}
在first方式中,函数实际上是获取矩阵的起始地址。我明白了。
但是,我不明白为什么函数在第一种方式中实际上获取矩阵中 第二个元素的地址,而不是 第二行的地址 在矩阵中(而后者实际上是通过第三种方式实现的)。
【问题讨论】:
标签: c matrix pointer-arithmetic