尝试在C中打印矩阵时未定义参考函数

我有简单的prinitng矩阵方法。

void printMatrix(int matrix){ int i; for(i=0;i<sizeof matrix/sizeof matrix[0];i++){ for(j=0; j<sizeof matrix[0]/sizeof matrix[0][0];i++){ printf("%03d",matrix[i][j]); } printf("\n"); } printf("\n"); } 

主要是我打电话:

 printMatrix(matrix); 

矩阵定义为:

 int matrix[2][3] = {{1, 3, 4}, {2, 0, 1}}; 

问题是我得到“未定义的参考’printMatrix’”你知道问题出在哪里吗? 它需要一些特殊的包括吗? 我不这么认为,但我不知道,错在哪里。

我已修复你的代码:

 #include  void printMatrix(int matrix[2][3]) { int i = 0, j = 0; for(i = 0 ; i < 2 ; i++) { for(j = 0 ; j < 3 ; j++) { printf("%03d ", matrix[i][j]); } printf("\n"); } printf("\n"); } int main(void) { int matrix[2][3] = {{1, 3, 4}, {2, 0, 1}}; printMatrix(matrix); return 0; } 

代码不健壮而且美观。 主要是,我已经修复了你的编码风格。

注意,以下'for'循环中的最后一个“元素”不能增加i,而是j!

 for(j=0; j 

它必须被(或更好的,由我上面的代码替换...)

 for(j=0; j 

编辑:

您可以检索矩阵的大小:

 leni = sizeof matrix / sizeof matrix[0][0]; 

sizeof matrix - > 8

sizeof matrix [0] [0] - > 4

勒尼 - > 2

 lenj = sizeof matrix[0] / sizeof matrix[0][0] 

sizeof matrix [0] - > 12

sizeof matrix [0] [0] - > 4

lenj - > 3

 #include  void printMatrix(int matrix[][3]) { int i = 0, j = 0, leni = 0, lenj = 0; leni = sizeof matrix / sizeof matrix[0][0]; lenj = sizeof matrix[0] / sizeof matrix[0][0]; for(i = 0 ; i < leni ; i++) { for(j = 0 ; j < lenj ; j++) { printf("%03d ", matrix[i][j]); } printf("\n"); } printf("\n"); } int main(void) { int matrix[2][3] = {{1, 3, 4}, {2, 0, 1}}; printMatrix(matrix); return 0; } 

你在定义函数之前调用它吗? 如果是这样,请尝试将函数定义放在main之前。

您已将printMatrix的参数printMatrixint 。 更改void printMatrix(int matrix){ to void printMatrix(int matrix[][3]){ 。 请注意,您需要定义除第一个维度之外的所有维度的大小。

由于以下几个原因,这不起作用:

(1)您的function签名错误:

 void printMatrix(int matrix) 

只需要一个int,而不是一个矩阵

(2)你不能在这样的函数中使用sizeof ,因为数组在传递给函数时会衰减为指针。 您需要传递其他参数才能使函数知道矩阵尺寸

然而,您提到的链接错误的原因并不仅仅是发布函数的源代码 – 您需要更明确地了解您拥有的源文件以及如何构建代码。