c语言函数声明

这段代码有什么问题吗?为什么总是停止工作... 这段代码有什么问题吗?为什么总是停止工作 展开
 我来答
自我编程
2019-03-25 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

假设主函数main()。其他函数void fun(int a,int *b)。

关于函数定义和声明:

在代码中fun函数,有完整函数体的代码就是函数定义部分,比如void fun(int a,int *b){。。。};。

如果没有具体实现的函数体代码(也就是大括号内容),那么就是函数声明。比如void fun(int ,int *);

关于函数声明和调用:

如果fun函数定义在main代码上面。比如:

void fun(int a,int *b){。。。};

int main(){

int a=0,int b=0;

......

fun(a,&b);//这里fun定义代码在main上面,所以可以不需要声明。反之需要先写声明语句

return 0;

}

关于函数局部变量及全局变量:

简单区分:

定义在函数之外的就是全局变量,这个变量所有函数都可以直接使用,并且共用同一个地址。任意函数修改了变量值,其他函数调用也会变。

定义在函数之内的就是局部变量,局部变量只属于该函数,其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干。

比如:

int a;//这就是全局变量,作用域下所有函数共用

int main()

{

int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去。

printf("%d",b);

return 0;

}

注意:c语言中允许局部变量和全局变量同名,但是同名的局部变量会屏蔽全局变量,实际代码避免同名。

关于函数传值和传址:

如函数void fun(int a,int *b){..........};这里形参a 和*b,分别表示一个值和一个地址

所以在调用该函数时,比如:

int main()

{

int c,d;

fun(c,&d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和&d,叫做实参。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变。

return 0;

}

顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值,需要用malloc函数申请。(这里看不懂可以暂时忽视)

透彻且犀利灬才子8760
2019-05-13 · TA获得超过4699个赞
知道大有可为答主
回答量:7285
采纳率:75%
帮助的人:755万
展开全部
声明嘛表示有这么个函数了,定义就是具体实现了,举个例子: 函数声明: int fun(int a, int b); 函数定义: int fun(int a,int b) { int c; c=a+b; return c; } 声明就象是定义的头部,比较简略,函数是用来调用的,如果函数定义部写到调用的位置后面,执行到调用位置,后面根本没执行就找不到了,当然报错了,就要在前面加声明,表示有这个函数,反之先写函数体,后调用声明就用不了,不在同一源文件,道理也是如此,写的够简单明白的了吧,累死我了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淋呐9012
2019-01-18 · TA获得超过3517个赞
知道大有可为答主
回答量:5747
采纳率:72%
帮助的人:264万
展开全部
函数声明表示有这么个函数了,函数定义就是具体实现了。
举个例子:
函数声明:
int fun(int a, int b);

函数定义:
int fun(int a,int b)
{ int c;
c=a+b;
return c; }

函数声明就像是函数定义的头部,比较简略,函数是用来调用的,如果函数定义部写到调用的位置后面,执行到调用位置,后面根本没执行就找不到了,当然报错了,就要在前面加声明,表示有这个函数,反之先写函数体,后调用声明就用不了,不在同一源文件,道理也是如此。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折耳迷妹
2020-06-13
知道答主
回答量:1
采纳率:0%
帮助的人:606
展开全部
函数声明的目的主要是说明函数的类型和参数的情况,函数声明一般与函数定义中的第一行相同,以分号结束。
函数类型 函数名(参数表);
如果在调用函数时,既不定义,也不声明,程序编译时会出错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知之为知之
2019-01-18 · 知道合伙人互联网行家
知之为知之
知道合伙人互联网行家
采纳数:38 获赞数:360
安腾达核心工程师称号

向TA提问 私信TA
展开全部
int a = main(9,10); 错了吧,应该是 int a ; a= main01(9,10);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式