标题:函数调用问题
只看楼主
小代帅帅
Rank: 1
来 自:北京昌平
等 级:新手上路
帖 子:92
专家分:7
注 册:2013-5-11
结帖率:89.66%
已结贴  问题点数:20 回复次数:17 
函数调用问题
有一事不明:
#include<stdio.h>
int main(void)
{
    int add(int x,int y);//为什么非得放在开头?放在c=add(a,b);的正上方就会报错,老师曾经说过调用语句放在用他之前就行啊!
    int a,b,c=0;
    printf("please input two datas:");
    scanf("%d%d",&a,&b);

    c=add(a,b);
    printf("%d",c);
    return 0;
}

int add(int x,int y)
{
    int z;
    z=x+y;
    return (z);
}
搜索更多相关主题的帖子: please return 
2013-12-03 14:40
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
放在include和main之间

DO IT YOURSELF !
2013-12-03 14:42
小代帅帅
Rank: 1
来 自:北京昌平
等 级:新手上路
帖 子:92
专家分:7
注 册:2013-5-11
得分:0 
回复 2楼 wp231957
你说的是把add()函数放在他俩之间吧,这样也行啊,那你说的就不用写int add(int x,int y);这条语句了吧,我的意思是为什么状态条语句要放在main()函数的开头?
还有一个问题,如果被调用函数的形参与main()函数中的形参为一样的字母(变量名)时就不用写函数调用语句了吧?请指教

别用你的常规和常识来诋毁我卓越的创造力和另类的行为······
2013-12-03 14:50
vivalatom
Rank: 2
等 级:论坛游民
帖 子:23
专家分:39
注 册:2013-12-2
得分:0 
声明函数,你可以去掉int add(int x,int y);试一试,如果没有的话会报错,因为系统检测到main之后就不会继续检测,所以你在main后面定义的函数不会被读取,解决方法有两种,一种是把函数放到main之前,另一种是在调用之前先声明
2013-12-03 14:59
小代帅帅
Rank: 1
来 自:北京昌平
等 级:新手上路
帖 子:92
专家分:7
注 册:2013-5-11
得分:0 
回复 4楼 vivalatom
如果被调用函数的形参与main()函数中的形参为一样的字母(变量名)时就不用写函数调用语句了吧?

别用你的常规和常识来诋毁我卓越的创造力和另类的行为······
2013-12-03 15:06
vivalatom
Rank: 2
等 级:论坛游民
帖 子:23
专家分:39
注 册:2013-12-2
得分:0 
我没理解你的意思啊。。。啥叫为一样的字母?
在前面声明变量只是为了不让系统忽略掉自定函数,因为系统检测到主函数之后就不再检测之后的函数了。
就是为了告诉系统主函数后面还有东西
2013-12-03 15:30
vivalatom
Rank: 2
等 级:论坛游民
帖 子:23
专家分:39
注 册:2013-12-2
得分:0 
我感觉你放的位置很奇怪啊,一般都是放include和main之间的啊。。。你这种位置我第一次见。。。你的程序能运行?
2013-12-03 15:32
IceSource
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:37
专家分:139
注 册:2013-12-3
得分:0 
以下是引用小代帅帅在2013-12-3 14:40:11的发言:


    int add(int x,int y);//为什么非得放在开头?放在c=add(a,b);的正上方就会报错,老师曾经说过调用语句放在用他之前就行啊!
我将该句放在c=add(a,b);的正上方可以 成功运行。
你可以把你的错误提示贴上来看一下。
2013-12-03 15:37
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:20 
程序代码:
#include <stdio.h>

int add(int a,int b)
{
    return a+b;
}

int main()
{
    printf("s=%d\n",add(4,5));
    return 0;
}
/* 这个算不怎么正规的写法*/


#include <stdio.h>

int add(int a,int b);

int main()
{
    printf("s=%d\n",add(4,5));
    return 0;
}

int add(int a,int b)
{
    return a+b;
}

/* 这个算是比较正规的写法*/

#include <stdio.h>

int add(int ,int );

int main()
{
    printf("s=%d\n",add(4,5));
    return 0;
}

int add(int a,int b)
{
    return a+b;
}

/* 当然了 还可以这样写 */

#include <stdio.h>

int add(int a,int b);

int main()
{
    printf("s=%d\n",add(4,5));
    return 0;
}

int add(int aa,int bb)
{
    return aa+bb;
}

/* 当然了 还可以这样写 */

/*把函数声明写进main里的写法 我不喜欢,所以就不评论了 */

DO IT YOURSELF !
2013-12-03 15:40
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
那只是申明一下而已,
使用之前必须申明,如果函数定义在调用之前,就没有必要这样

我行我乐
我的博客:
http://blog.yuccn. net
2013-12-03 15:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-424627-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.267287 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved