我不明白x[i][j] = -i*cols - j ;
正在做什么。有人可以解释,因为我是初学者。我无法理解指针'*'
。抱歉英语不好。
int main(int argc, char *argv[]) {
int a[5][5];
readarray(5, 5, a);
printarray(3, 5, a);
return 0;
}
void readarray(int rows, int cols, int x[rows][cols]) {
int i, j;
for (i = 0; i< rows; i++)
for (j = 0; j < cols; j++)
x[i][j] = -i*cols - j ;
}
void printarray(int rows, int cols, int x[rows][cols]) {
int i, j;
for (i = 0; i< rows; i++) {
for (j = 0; j < cols; j++)
printf("%4d", x[i][j]) ;
printf("\n");
}
}
答案 0 :(得分:4)
*
这里是乘法,而不是指针。
x[i][j] = -i*cols - j ;
这里发生了几件事:
-i
(-i) * cols
- j
x[i][j]
。如果您想知道使用*
进行取消引用和乘法之间的区别,请查看this thread。
答案 1 :(得分:0)
这只是填充数组元素的值。
x[i][j] = -i*cols - j ; = x[i][j] = -i*5 - j ;
x[0][0] = 0
x[0][1] = -0*5 - 1 = -1
. . .
x[1][0] = -1*5 - 0 = -5
. .
x[3][3] = -3*5 - 3 = -18
依旧......
答案 2 :(得分:0)
我认为只进行了一次乘法运算。没有使用指针。
i=2;
j=5;
cols = 5;
x[2][5] = -2 * 5 - 5