十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
子函数写在前,不需要写声明,但函数过多会显得结构混乱;
10年积累的成都网站制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有顺平免费网站建设让你可以放心的选择与我们合作。
子函数写在后,需要写声明,但在声明处加了函数说明注释之后,代码结构比较清晰;
先回答下第一个问题,子函数的实现方法可以放在使用它的主函数或者其它子函数后面,但是你的定义一定要在使用它之前;不然编译器怎么知道你用的函数square是什么,这就是我们经常包含头文件的一个目的,头文件是一些函数定义或者预编译命令。
修改是在#includestdio.h后面加
int square(int num);
第二个问题:num是在main定义是可以在main作用域内直接使用,或者当做参数传递给子函数,你的问题num为什么可以在子函数中用,首先你子函数的num并非main里的num只是你把他们名字写成一样了;main里num是通过值传递给子函数的num,实际他们两个num的内存地址是不一样的,你子函数换个名字去理解一下。
如果定义在调用之前,则可以不需要声明
如果定义在调用之后,则要 先声明,后调用
函数要先声明后才能调用,声明分为两种如下:
先声明后定义:
void b();
void a()
{
b();
}
void b()
{
}
声明和定义在一个地方:
void b()
{
}
void a()
{
b(); //这样才能满足先声明后调用
}
你编译错误的原因应该是这样:
void a()
{
b(); //此时b还没有声明
}
void b()
{
};
局部变量声明必须放在主程序或子程序之前,这是规矩,照办就是了。
其实是printf("等于");
先执行的,然后再执行的scanf("%d", c);
只不过scanf的时候并不是从屏幕上scanf的,而是从缓冲区scanf的
你的5其实在printf之前先进入了缓冲区,然后再printf等于,然后再从缓冲区scanf那个5
如果要想得到你那个效果的输入输出,可以试试下面的代码
#include stdio.h
void main()
{
int b, c, f;
char a;
scanf("%d %c", b, a);
printf("%d%c", b, a);
if (a == '-')
{
printf("等于");
scanf("%d", c);
f = b - c;
printf("%d %d", c, f);
}
}