2014-10-30 103 views
0

我有这样的代码如何返回矩阵?

int draw_matrix(int a){ 

    int matrix[a][a]; 
    int i,j; 

    for(i=0;i<a;i++){ 
     for(j=0;j<a;j++){ 
      matrix[i][j]=0; 
     } 
     } 

    int ship; 
    for (ship=0;ship<5;ship++){ 
    if (a==8){ 
     if (ship==0){ 
     int x1, x2, x3, x4, y1, y2, y3, y4; 
     printf("... \n"); 
     scanf("%i %i %i %i", &x1, &x2, &x3, &x4); 
     fflush(stdin); 
     printf("... \n"); 
     scanf("%i %i %i %i",&y1,&y2,&y3,&y4); 
     fflush(stdin); 
     matrix[x1-1][y1-1]=1; 
     matrix[x2-1][y2-1]=1; 
     matrix[x3-1][y3-1]=1; 
     matrix[x4-1][y4-1]=1; 
     } 
     if (ship==1){... 
     . 
     . 
     . 
    } 
return 0; 
} 

这个代码是一个游戏,我需要调用这个函数中其他功能使用的矩阵,但我不知道如何回到这个矩阵...

有人可以告诉我该怎么做吗? (我使用C不是C++工作)

回答

0

你的功能应该是int **类型的,你应该有return matrix;在底部,而不是return 0;

此外,你应该初始化矩阵是这样的:

int **matrix; 
matrix = new int*[a]; 
int i,j; 

for(i=0;i<a;i++){ 
    matrix[i] = new int[a]; 
    for(j=0;j<a;j++){ 
     matrix[i][j]=0; 
    } 
    } 
+0

当我编译它说类似“警告:从不兼容指针类型返回”和“警告:函数返回局部变量的地址[默认启用]” – 2014-10-30 16:52:58

+0

@SantiagoPáez我更新了我的答案。 – phantom 2014-10-30 16:56:57

+0

什么是你的“新”?编译器说我必须首先声明它。 – 2014-10-30 17:13:33