| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2513 人关注过本帖
标题:函数 “调用” 只写函数名
只看楼主 加入收藏
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:30 
函数 “调用” 只写函数名
//这个为什么编译,运行都不出错呢?
#include<stdio.h>
void fun(int i)
{
    printf("%d,",i);
}

void main()
{
    int i=5;
    fun(i);
    fun;//因为不确定这个还是调用,标题加了引号...
}

运行结果
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 书生等待 于 2014-9-5 09:05 编辑 ]
2014-09-04 17:13
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
不是调用

我觉得就像:
int a=0;
...
a;
...

总有那身价贱的人给作业贴回复完整的代码
2014-09-04 17:32
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:2 
简单说说:
函数调用必须要有括号,这是 C 语言的语法规定。
特殊情况下 有点编译器允许通过一些公用类关键字函数 例如
exit(0); 和exit;
return 0;和return; 编译系统自动识别处理。
我们自己写的自定义函数,调用的时候必须加括号呀
如果不加 编译器会识别成普通变量,或者函数指针之类的,不会是函数调用。
楼主你的编译器可能智能了一把 能输出一次结果
2014-09-04 18:38
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3 楼 erty1001
没有调用啊,楼主的代码在最后打印了一次i的值

总有那身价贱的人给作业贴回复完整的代码
2014-09-04 18:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
以下是引用erty1001在2014-9-4 18:38:49的发言:

简单说说:
函数调用必须要有括号,这是 C 语言的语法规定。
特殊情况下 有点编译器允许通过一些公用类关键字函数 例如
exit(0); 和exit;
return 0;和return; 编译系统自动识别处理。
我们自己写的自定义函数,调用的时候必须加括号呀
如果不加 编译器会识别成普通变量,或者函数指针之类的,不会是函数调用。
楼主你的编译器可能智能了一把 能输出一次结果
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    exit;
    printf("Hello World\n");
    return 0;
}


用代码说话 这段代码编译的时候在我这里是有warning的

a.c: In function 'main':
a.c:6:2: warning: statement with no effect [-Wunused-value]
  exit;
  ^


运行也发现确实是输出了Hello World 如果这个时候成功调用 应该是不会输出的

要知道 return是关键字 而exit()是一个库函数


[ 本帖最后由 zklhp 于 2014-9-4 19:08 编辑 ]
2014-09-04 19:06
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
回复 4 楼 embed_xuel
我晕~~
2014-09-04 19:07
wssy213
Rank: 12Rank: 12Rank: 12
来 自:湖南
等 级:贵宾
威 望:10
帖 子:967
专家分:3703
注 册:2014-6-6
收藏
得分:0 
这种方式基本上没啥实用价值,纠结这个干啥

坚持----------------------------------唯一的道路
shit ! ! !
2014-09-04 20:50
Coincedence4
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
收藏
得分:0 
lz 你那个只有函数名是怎么编译过去的,,,编译直接跳过去的吗?输出的第二个5和那个你所谓的用“函数名”调用无关,应该是最后那个printf输出的吧
2014-09-04 21:03
Coincedence4
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
收藏
得分:0 
我觉得你那个函数名只是指出这个函数在内存中的地址,因为函数名和数组名有类似的功能,你试试给这个函数名付一个值输出看看是什么
2014-09-04 21:07
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 7 楼 wssy213
现在在准备面试,这个是以往公司的笔试题
2014-09-05 09:06
快速回复:函数 “调用” 只写函数名
数据加载中...
 
   



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

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