永发信息网

为何函数要声明两次?

答案:6  悬赏:50  手机版
解决时间 2021-11-15 19:54
  • 提问者网友:送舟行
  • 2021-11-15 09:48
为何函数要声明两次?
最佳答案
  • 五星知识达人网友:大漠
  • 2021-11-15 10:32
规定,懂吗?
如果不理解记住即可

子函数,一般有三个方式来做
第一个
void sort (int t) //这里没有分号,不是一句话

{
代码具体内容
}
int main ()
{
sort (4) ;//调用
}
在调用它的函数前面写子函数的具体实现代码,这里可以不再声明

第二个和第三个类似,一个是在main中,一个是在main前声明
在调用它的之后写具体实现代码
void sort (int t); 这个地方不要忘记要有分号,是一个独立的一句话

int main ()
{
sort (4) ;//调用
}
void sort (int t) //这里没有分号

{
代码具体内容
}

第三种

int main ()
{
void sort (int t);
sort (4) ;//调用
}
void sort (int t)
{
代码具体内容
}

记住一个子函数,要有返回值的,那么这个返回值是有类型的,main也是有的,不过一般不写
要不然,不是一个完整的子函数
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-11-15 13:25
前面是声名,后面是实现追问为何实现又要声明呢?我之前不是声明了么
  • 2楼网友:往事隔山水
  • 2021-11-15 12:02
第一行是声明,后面是说明这个函数是用来做什么的。追问但是我们看 int t ; t =3 这里就不用再写int 了不是吗.声明一次就够了不是吗追答t=3这个不叫声明,叫赋值。
  • 3楼网友:躲不过心动
  • 2021-11-15 11:40
第一行是sort声明,后面的是sort的实现
如果sort的实现放到main()之前,那么第一行的声明可以不需要。追问但是我们看 int t ; t =3 这里就不用再写int 了不是吗.声明一次就够了不是吗追答你这个int t;t=3不是声明,int t是定义变量t,后一句是对t进行赋值
声明是针对函数的,如果在函数1里调用了函数2,而且函数2的定义在函数1之后,就需要在函数1之前对函数2进行声明,否则编译会报错找不到符号的,声明也就是需要写出该函数的名称,参数及返回值类型追问是啊 ,那为何之后我又要声明一次呢??就是在函数实现的时候又要写一次?前面不是声明过了吗追答额,声明只有函数名字返回值及参数,后面跟着分号的,只是一条语句而没有实现sort函数内容,只是告诉main函数你有一个叫做sort的函数
后面的叫做函数定义或者实现,表示sort是干什么的,怎么干,函数名后面没有分号,并且函数内容也用大括号{}括起来的。追问我知道,我的意思是,实现的时候,前面的void可以不用写,因为之前已经声明过了,但是却还是要写,等于是声明,声明再实现,这是为何追答void表示没有返回值呀
C语言是顺序编译的,main在sort之前,不先在main之前告诉main它就不知道有叫sort的这个函数,怎么告诉它呢,就是通过声明

LZ是看看C语言教材函数一章,有讲这个的
  • 4楼网友:刀戟声无边
  • 2021-11-15 11:27
顶楼上!

第一行的是声明
后面那个是具体的实现。
这样在前面声明之后,函数的具体实现就可以写在调用部分的后面,否则只能写在调用部分的前面。追问但是我们看 int t ; t =3 这里就不用再写int 了不是吗.声明一次就够了不是吗追答哪里的int t

int t 是声明一个int类型的变量t,这个变量只在函数的范围内有效。也就是说,在
void sort (int t)
{
代码具体内容
}
的{}内部是有效的,外面就无效了。追问我的意思是,实现的时候,前面的void可以不用写,因为之前已经声明过了,但是却还是要写,等于是声明,声明再实现,这是为何追答第二个不是声明了,是实现部分,必须写全,这个是C语言规定的。

你看看 放纵思想ME 写的,那样写在前面也是可以的
  • 5楼网友:怀裏藏嬌
  • 2021-11-15 11:03
第一个是声明,第二个定义。

如果将第二个放到main函数前,就不需要声明。
如:
void sort (int t)
{
代码具体内容
}

int main ()
{
sort (4) ;//调用
}追问我的意思是,定义的时候,前面的void可以不用写,因为之前已经声明过了,但是却还是要写,等于是定义,再次定义加实现,这是为何追答不太明白你的意思。

知道什么是函数的声明和定义吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯