先输入原型声明再调用函数出错,只调用函数正常。
课程设计
1
问题遇到的现象和发生背景
在学习c语言的时候,发现函数无法识别。将函数原型声明放在上方,函数放在最后运行出错,但是将函数输入在上方,运行正常。函数声明格式也没错,不知道怎么回事。
问题相关代码
#include<stdio.h>
int xun(int key,int a[],int changdu);
int main(void){
int x;
int a[]={1,3,5,456,456,234,567,78,563,22,1,4,5,6,7,8};
int loc;
printf("请输入x\n" );
scanf("%d",&x);
loc=xun(x,a,sizeof(a)/sizeof(a[10]));
if(loc!=-1){
printf("%d %d",x,loc);
}else{
printf("错误");
}return 0;
int xun(int key,int a[],int changdu){
int ret=-1;
int i;
for(i=0;i<changdu;i++){
if(a[i]==key){
ret=i;
break;
}
} return ret;
}
}
运行结果及报错内容
数组函数训练.c:(.text+0xac): undefined reference to `xun'
我的解答思路和尝试过的方法
对了一下函数声明格式,应该是没错的,函数名称也没有打错。把函数放在刚开始的地方就可以运行了。
我想要达到的结果
了解原因
-
xun函数写在main函数里面了
#include<stdio.h> int xun(int key,int a[],int changdu); int main(void){ int x; int a[]={1,3,5,456,456,234,567,78,563,22,1,4,5,6,7,8}; int loc; printf("请输入x\n" ); scanf("%d",&x); loc=xun(x,a,sizeof(a)/sizeof(a[10])); if(loc!=-1){ printf("%d %d",x,loc); }else{ printf("错误"); } return 0; } int xun(int key,int a[],int changdu){ int ret=-1; int i; for(i=0;i<changdu;i++){ if(a[i]==key){ ret=i; break; } } return ret; }
发表回复