098 数组指针

#include <stdio.h>
#include <assert.h>

typedef int R3[3];

int main(int argc, char *argv[])
{
    int matrix[2][3] = { 
        [0][1] = 1, [1][0] = 1, [1][2] = 1 
        };  
    int *mp;
    R3 *r3;
    //int (* r3)[3];

    mp = &matrix[0][0];
    r3 = matrix;
    printf("%10s: %p\n", "mp", mp);
    printf("%10s: %p\n", "r3", r3);
    printf("%10s: %p\n", "mp+1", mp+1);
    printf("%10s: %p\n", "r3+1", r3+1);
    
    for (; r3 < matrix+2; r3++) {
        int i;
        for (i = 0; i < 3; i++) {
            if ((*r3)[i] == 0) (*r3)[i] = 1;
            else (*r3)[i] = 0;
        }   
    }   

    assert(matrix[0][0] == 1); 
    assert(matrix[0][1] == 0); 
    assert(matrix[0][2] == 1); 
    assert(matrix[1][0] == 0); 
    assert(matrix[1][1] == 1); 
    assert(matrix[1][2] == 0); 

    return 0;
}