main()
{
int n;
printf("input number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n+%d\n",n);
}
上面程序的第六行是s(n); ,这个是不是调用的int s(int n)这个函数啊,要是的话,不是先执行main函数吗?而那个函数在下面,执行main的时候还没它呢怎么调用它啊???到了执行它的时候main已经执行完了.这个程序该怎么理解啊????????????????????
----------------解决方案--------------------------------------------------------
这没什么关系的,函数写在下面可理解为只是对函数的说明,即函数要干什么.在main调用时,会查找函数的说明再做相关的操作,等函数执行完后再反回到main执行后面的语句.(仅限理解,实际上是不是这样我就不太了解了)
----------------解决方案--------------------------------------------------------
不少C教材说,如果函数类型是INT,可以在函数调用前不必作函数声明.但是使用这种方法时,系统无法对参数的类型做\检查.
在TC中,可以这样.TC编译器不是很严格.
但在VC中就不能那样写了.必须得在main中声明..或者把S函数写到main之前
[此贴子已经被作者于2007-7-18 20:48:43编辑过]
----------------解决方案--------------------------------------------------------
楼上你的意思是至于写哪里要看用的什么编译器了
----------------解决方案--------------------------------------------------------
如果调用函数在主函数下实现 则调用前要在主函数里声明
如果调用函数在主函数前实现 则在主函数中不用声明可直接调用
----------------解决方案--------------------------------------------------------
main()
{
int n;int s() /最好加上声明
printf("input number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n+%d\n",n);
}
上面程序的第六行是s(n); ,这个是不是调用的int s(int n)这个函数啊,要是的话,不是先执行main函数吗?而那个函数在下面,执行main的时候还没它呢怎么调用它啊???到了执行它的时候main已经执行完了.这个程序该怎么理解啊????????????????????
----------------解决方案--------------------------------------------------------
在主函数中我没声明也正常编译了啊
----------------解决方案--------------------------------------------------------
C程序总是从main函数开始执行的
----------------解决方案--------------------------------------------------------
我不明白
----------------解决方案--------------------------------------------------------
顺序执行吗
----------------解决方案--------------------------------------------------------