我正在尝试制作一个顺时针旋转矩阵的程序,并且我认为指针存在一些问题

时间:2019-12-25 16:55:02

标签: c arrays pointers

#include <stdio.h>
#include <stdlib.h>

int main(){
    int mat[3][3]={
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int nmat[3][3];
    int *s=mat[0][0];
    int *t=nmat[0][2];
    int i;
    for (i=0; i<3; i++){
        *t=*s;
        s++; t=t+3;
    }
    int *q=mat[2][0];
    int *w=nmat[0][0];
    for (i=0; i<3; i++){
        *w=*q;
        q++; w=w+3;
    }
    int *a=mat[2][0];
    int *b=nmat[0][0];
    for (i=0; i<3; i++){
        *b=*a;
        a=a-3; b++;
    }
    int *x=mat[2][2];
    int *y=nmat[2][0];
    for (i=0; i<3; i++){
        *b=*a;
        a=a-3; b++;
    }
    int *p=nmat[0][0];
    int j;
    for (i=0; i<3; i++){
        for (j=0; j<3; j++){
            printf("%d ", *p);
            p++;
        }
        printf("\n");
    }
}

我是c语言的初学者,正在练习一些问题。 我正在尝试制作一个顺时针旋转矩阵的程序,但它似乎不起作用。我的代码在哪里错误?

The program doesn't print anything

1 个答案:

答案 0 :(得分:0)

int *s=mat[0][0];在这里,您将s声明为pointer of type int,同时使用mat[0][0](类型为int)对其进行初始化。