什么x [i] [j] = -i * cols -j;正是用C做的

时间:2014-04-28 16:06:33

标签: c

我不明白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"); 
    } 
}

3 个答案:

答案 0 :(得分:4)

*这里是乘法,而不是指针。

x[i][j] = -i*cols - j ;

这里发生了几件事:

  1. 否定:-i
  2. 乘法:(-i) * cols
  3. 减法:- j
  4. 赋值:将右侧的结果分配给x[i][j]

  5. 如果您想知道使用*进行取消引用和乘法之间的区别,请查看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