为何函数要声明两次?
答案: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也是有的,不过一般不写
要不然,不是一个完整的子函数
如果不理解记住即可
子函数,一般有三个方式来做
第一个
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语言教材函数一章,有讲这个的
如果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 写的,那样写在前面也是可以的
第一行的是声明
后面那个是具体的实现。
这样在前面声明之后,函数的具体实现就可以写在调用部分的后面,否则只能写在调用部分的前面。追问但是我们看 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可以不用写,因为之前已经声明过了,但是却还是要写,等于是定义,再次定义加实现,这是为何追答不太明白你的意思。
知道什么是函数的声明和定义吗?
如果将第二个放到main函数前,就不需要声明。
如:
void sort (int t)
{
代码具体内容
}
int main ()
{
sort (4) ;//调用
}追问我的意思是,定义的时候,前面的void可以不用写,因为之前已经声明过了,但是却还是要写,等于是定义,再次定义加实现,这是为何追答不太明白你的意思。
知道什么是函数的声明和定义吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯