C语言 子函数和主函数的放置前后顺序区别?

1、子函数在前:
#include<stdio.h>

int square(int num)

{

return num*num;
}

int main()
{
int num;

int (*fp)(int); //定义函数子帧

printf("请输入一个整数:");

scanf("%d",&num);

fp=square;

printf("%d * %d = %d\n",num,num,(*fp)(num));
return 0;
}//如果输入值为6,那么输出值为36。这个没问题。

2、子函数放在主函数之后

#include<stdio.h>

int main()
{
int num;

int (*fp)(int); //定义函数子帧

printf("请输入一个整数:");

scanf("%d",&num);

fp=square;

printf("%d * %d = %d\n",num,num,(*fp)(num));
return 0;
}

int square(int num)

{

return num*num;
} //程序报错。 另外就是,在第一个程序中 num不是局部吗?为什么可以直接用在子函数体中?谢谢!!!

先回答下第一个问题,子函数的实现方法可以放在使用它的主函数或者其它子函数后面,但是你的定义一定要在使用它之前;不然编译器怎么知道你用的函数square是什么,这就是我们经常包含头文件的一个目的,头文件是一些函数定义或者预编译命令。
修改是在#include<stdio.h>后面加

int square(int num);
第二个问题:num是在main定义是可以在main作用域内直接使用,或者当做参数传递给子函数,你的问题num为什么可以在子函数中用,首先你子函数的num并非main里的num只是你把他们名字写成一样了;main里num是通过值传递给子函数的num,实际他们两个num的内存地址是不一样的,你子函数换个名字去理解一下。
温馨提示:答案为网友推荐,仅供参考
相似回答