-3

这是我的代码

#include <stdio.h>
#include <conio.h>

int func(int , int);
main(){
int m[3][3]={(0,0,0),
             (0,0,0),
             (0,0,1)};
int n=3,a;
a=func(m[3][3], n);
if(a==1) printf("True");
else printf ("False");
getch();
}

int func(int m[3][3], int n)
{
int i, j, k=0;
for (i=0;i<n;i++)
    for (j=0;j<n;j++)
        if(m[i][j]==1) k=1;

    return k;

}

我错在哪里?IDE 的消息是:Funk.cpp:(.text+0x4b): undefined reference to `func(int, int)' [Error] ld returned 1 exit status

4

2 回答 2

2

函数原型和定义func不匹配。因此错误。通过将函数原型更改为来修复它

int func(int[3][3], int);

下一个错误是:

a=func(m[3][3], n);

应该改为

a=func(m, n);

因为您要传递数组,而不是数组之外的无效内存位置。


我认为你想要

int m[3][3]={{0,0,0},
             {0,0,0},
             {0,0,1}};

代替

int m[3][3]={(0,0,0),
             (0,0,0),
             (0,0,1)};

此外,最好使用 的标准定义main,即更改

main(){

int main(void) {
于 2016-01-26T15:14:29.223 回答
0

链接器需要一个定义int func(int, int);但您没有提供该定义。

您在该行中调用该函数a=func(m[3][3], n);

func源代码末尾的函数具有错误的参数类型。您显然正在使用 C++ 编译器(您的意思是这样做吗?),因为C 中不支持函数重载。

于 2016-01-26T15:15:15.290 回答