题目

二维数组与指针:按行打印矩阵

思路

本题按行打印二维数组(矩阵)。

外层 i 为行号,内层 j 为列号,打印 a[i][j];每行结束换行。指针写法 *(a[i]+j) 与下标访问同一元素。

解题分析

二维数组行地址 a[i] 等价于 &a[i][0],按行打印时对列 j 用 a[i][j] 或指针 *(*(a+i)+j),后者练指针运算。

完整程序

#include <stdio.h>

int main(void)
{
    int a[2][4];
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 4; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 4; j++) {
            printf("%d%c", *(*(a + i) + j), j + 1 < 4 ? ' ' : '\n');
        }
    }
    return 0;
}

运行示例

输入:

1 2 3 4
5 6 7 8

输出:

1 2 3 4
5 6 7 8