LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 873|回复: 11

请问:函数原型该怎样写?

[复制链接]
发表于 2003-11-16 21:01:25 | 显示全部楼层 |阅读模式

  1. main()
  2. {
  3.         float add(float x, float y);
  4.         float a,b,c;
  5.         scanf("%f,%f",&a,&b;
  6.         c=add(a,b);
  7.         printf("sum is %f",c);
  8. }

  9. float add(float x, float y);
  10. {
  11.         float z;
  12.         z=x+y;
  13.         return(z);
  14. }
复制代码

请问:add()中的 float add(float x, float y); 如果不加分号";",对吗?
发表于 2003-11-16 21:15:23 | 显示全部楼层

回复: 请问:函数原型该怎样写?

最初由 poiu2002 发表

  1. main()
  2. {
  3.         float add(float x, float y);
  4.         float a,b,c;
  5.         scanf("%f,%f",&a,&b;
  6.         c=add(a,b);
  7.         printf("sum is %f",c);
  8. }

  9. float add(float x, float y)[color=red];[/color] //这个“;”不用,就象main()后没有一样
  10. {
  11.         float z;
  12.         z=x+y;
  13.         return(z);
  14. }
复制代码

 楼主| 发表于 2003-11-16 21:25:26 | 显示全部楼层
也就是说,加也可以,不加也可以,是吧?
谢谢colored的回答,让我这个初学者茅塞顿开!
发表于 2003-11-16 21:30:31 | 显示全部楼层

原型声明时要加“;”,那是一条语句
函数实现时不加“;”

所以你的代码中,第一个add()后加了“;”,那是一个声明
第二个add()后就不用加了,那是函数的实现。
发表于 2003-11-16 21:32:40 | 显示全部楼层
不是可加可不加,加分号就错了
 楼主| 发表于 2003-11-16 22:25:18 | 显示全部楼层
上述代码是谭版c语言书中的一个,在此有个分号,而且我们老师上课的时候讲,写完函数声明,再写函数首部时照抄就行了。

可我后面看书时又发现一个例子,结构类似,也是在主调函数中先对被调函数做原型声明,巧的是它的被调函数的首部不加分号。这我就糊涂了。

我的理解是:(基于上述代码的结构)

如果先在主调函数中对被调函数做原型声明,如:
main()
{
float add(float x, float y);
……
}

则在其后定义的被调函数的函数首部中,照抄它的函数声明就行了(除了分号不照抄外)。如:
main()
{
float add(float x, float y);
……
}

float add(float x, float y)
{
……
}

我知道第一条是语句,所以应该加分号。
但如果第二条我加了分号呢,会怎么样?编译会报错吗?如:
main()
{
float add(float x, float y);
……
}

float add(float x, float y);
{
……
}
发表于 2003-11-17 08:59:57 | 显示全部楼层
发表于 2003-11-20 08:21:05 | 显示全部楼层
动手试试就知道了
发表于 2003-11-23 15:59:47 | 显示全部楼层
float add(float x, float y);
{
……
}

这里是在定义函数,不能有";"
发表于 2003-11-27 10:08:01 | 显示全部楼层
还有,很少见到有人把函数申明写在另一个函数内
至于报不报错。。。难道你还没有试过?
ft
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表