用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,因为我认为它会更清晰。