编译时我得到这个错误,我不知道是什么问题

时间:2018-04-18 19:13:56

标签: c matrix

我将矩阵传递给文本文件

代码:

In function 'main':  
error: expected expression before 'int'  
  guardarMatriz(int matriz[3][3]);

错误消息;

{{1}}

2 个答案:

答案 0 :(得分:1)

您的代码中存在两个问题。首先,您没有正确初始化二维数组。它应该是这样的:

int matriz[3][3]={{1,2,3},{4,5,6},{7,8,9}};

第二,你没有将类型名称传递给函数调用来声明你的变量,所以它应该是这样的:

    int matriz[3][3];
    llenarMatriz();
    guardarMatriz(matriz);

答案 1 :(得分:0)

guardarMatriz(int matriz[3][3]);

将参数传递给函数时,不要包含类型和尺寸。

此外,当您调用函数返回某些内容时,您应该使用正确的类型(int无法返回int的2D数组),并且您必须将返回值存储在某处。

在这种情况下,您可以返回复合文字:

void *llenarMatriz(void)
{    
    return (int [][3]){{1,2,3},{4,5,6},{7,8,9}}; 
}

main

int main(void) /* void is the correct argument for `main` */
{
    int (*matriz)[3] = llenarMatriz(); /* A pointer to an array of int 3 */

    guardarMatriz(matriz);  
    system("pause");  
    return 0;  
} 

如果你不想在main中声明数组,你可以使用第一个函数的结果作为第二个函数的参数:

guardarMatriz(llenarMatriz());  

或者您可以直接传递复合文字:

guardarMatriz((int [][3]){{1,2,3},{4,5,6},{7,8,9}});