尝试在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
的参数printMatrix
为int
。 更改void printMatrix(int matrix){
to void printMatrix(int matrix[][3]){
。 请注意,您需要定义除第一个维度之外的所有维度的大小。
由于以下几个原因,这不起作用:
(1)您的function签名错误:
void printMatrix(int matrix)
只需要一个int,而不是一个矩阵
(2)你不能在这样的函数中使用sizeof
,因为数组在传递给函数时会衰减为指针。 您需要传递其他参数才能使函数知道矩阵尺寸
然而,您提到的链接错误的原因并不仅仅是发布函数的源代码 – 您需要更明确地了解您拥有的源文件以及如何构建代码。