用C语言打印二维数组

用C语言打印二维数组,c,multidimensional-array,C,Multidimensional Array,我想打印从另一种方法获得的二维数组,请参见代码: int** getPrint(){ const int EIGHT[7][5] = { { 0, 1, 1, 1, 0 }, { 1, 0, 0, 0, 1 }, { 1, 0, 0, 0, 1 }, { 0, 1, 1, 1, 0 }, { 1, 0, 0, 0, 1 }, { 1, 0, 0, 0, 1 }, { 0, 1,

我想打印从另一种方法获得的二维数组,请参见代码:

int** getPrint(){
    const int EIGHT[7][5] = {
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 }
    };
    return EIGHT;
}

int main(){
    int **ptr;
    ptr = getPrint();

    return 0;
}

打印此文件的最佳方法是什么?

如下所示

#include <stdio.h>

#define N 7
#define M 5

const int ( * getPrint( void ) )[M]
{
    static const int EIGHT[N][M] = 
    {
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 }
    };

    return EIGHT;
}

int main( void )
{
    const int ( *ptr )[M];
    int i, j;

    ptr = getPrint();

    for ( i = 0; i < N; i++ )
    {
        for ( j = 0; j < M; j++ ) printf( "%d ", ptr[i][j] );
        printf( "\n" );
    }

    return 0;
}
或者你可以使用typedef。比如说

#include <stdio.h>

#define N 7
#define M 5

typedef const int ( *ArrayPtr )[M];

ArrayPtr getPrint( void )
{
    static const int EIGHT[N][M] = 
    {
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 },
        { 1, 0, 0, 0, 1 },
        { 1, 0, 0, 0, 1 },
        { 0, 1, 1, 1, 0 }
    };

    return EIGHT;
}

int main( void )
{
    ArrayPtr ptr;
    int i, j;

    ptr = getPrint();

    for ( i = 0; i < N; i++ )
    {
        for ( j = 0; j < M; j++ ) printf( "%d ", ptr[i][j] );
        printf( "\n" );
    }

    return 0;
}

无,因为您有未定义的行为返回指向局部变量的指针。循环?你的代码有UB.int**和int[][]不一样谢谢,我还有一个小问题,const int*getPrint void[M]到底做什么?我从来没有在方法后面看到过[]。@Jazula它是一个返回数组指针的函数声明。你可以使用typedef,因为我认为它会更清晰。