C函数(变量)应该 先定义(声明),后使用

2020年3月20日
今天在学习C语言时,学到了函数是不能嵌套定义的,应该平行定义,如下面这样:

#include <stdio.h> //by [C语言中文网](http://c.biancheng.net/view/1851.html)
void func2(){
    
    		//函数2
    printf("C语言小白变怪兽");
}
void func1(){
    
    		//函数1
    printf("http://c.biancheng.net");
    func2();		//调用函数2
}
int main(){
    
    		//主函数
    func1();	//调用函数1
    return 0;	
}

但是跟小伙伴写的时候,更改了顺序:

#include <stdio.h> 		
void func1(){
    
    							//这里函数func1()的位置提前了
    printf("http://c.biancheng.net");
    func2();
}
void func2(){
    
    
    printf("C语言小白变怪兽");
}
int main(){
    
    
    func1();
    return 0;
}	//此段代码报错

编译,于是报错:
在这里插入图片描述
意思是func2 未定义,明明已经定义了啊,最后咨询了大佬,才想明白:

C语言是一行一行执行的,需要先声明,在调用

void func1(){
    
    							
    printf("http://c.biancheng.net");
    func2();
}

在这段程序中,func1调用了func2,但是此时func2还未声明,故报错,
所以需要在提前声明func2才能调用。

提前声明就可以了:

#include <stdio.h> 
void func2()		//提前声明fun2(),以供调用

void func1(){
    
    			//这里声明了func1(),故在main()中可直接调用
    printf("http://c.biancheng.net");
    //也可以在这一行进行fun2()的声明,只要是在func2()之前就可以
    func2();
}

void func2(){
    
    
    printf("C语言小白变怪兽");
}

int main(){
    
    
    func1();	
    return 0;
}

但是错误代码C2371"func2()"重定义;不同的基类型,却不懂为何,有机会再找找原因。
to be continue -_–

猜你喜欢

转载自blog.csdn.net/weixin_42417585/article/details/104988772