C语言面试题---函数(一)

来源:互联网 发布:属于淘宝禁售商品 编辑:程序博客网 时间:2024/05/16 18:33

原创2017-12-25创新教育研究中心TeachPlus

C语言面试题----函数(一)

函数部分在面试中的考察重点主要是几个关键字的使用,如static、const,这些我们在前文中已
经有过专题,因此在这里就不再继续赘述,主要来看一下,关于函数自身的几个问题:

分析下面的程序,程序能否给出运行结果,如果能输出是什么,如果不能,原因是什么

# include <stdio.h>int m,n;ps1(){    printf("please input a num\n");    scanf("%d",&m);    m++;}ps2(){    printf("please input a num\n");    scanf("%d",&n);    n--;}int  main( void){    int a = ps1();    int b = ps2();    printf("%d\t%d\n",a,b);    return 0;}

本题解析

答案是:会给出输出结果,输出结果是不不确定的整数;

看到这样的题目,可能绝大多数人的第一反应就是编译会报错,

因为对于第三行和第八行的函数定义是错误的,没有返回值类型,所以语法上是错误的。

那么这种说法对不对呢,从答案上我们可以看出来,这样的想法是明显不对的,

编译并不会报错。为什么会这样呢?

原因是,虽然我们习惯于使用返回值类型 + 函数名这样的方法进行函数的声明和定义,

标准也推荐我们这样做,但是并不代表省略掉返回值类型就不对了,

如果省略掉返回值类型,那么编译器会默认返回 int类型  。

当然,这也不是一定的,最终还是取决于编译器的不同而不同。

在本题中,首先可以确定的是,编译不会报错,省略了函数返回值类型的声明,

编译器默认返回 int  类型,但是函数中却没有 return  语句,所以返回的将会是不确定的整数。

当然,如果你在函数的定义中,添加了了 void  这样的返回值类型说明,

编译器就一定会报错了,所以推荐在编程的过程中,不管是否有返回值,也一定要写返回值类型的声明。


阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 林宜 这个世界 化粪池一辈子都不用清理口与 都匀 都匀影视城 贵州都匀 都匀景点 都匀邮编 都匀美食 都匀到贵阳 都匀东站 都匀一中 都匀二手房 都匀特产 都匀在哪里 都匀市属于哪个市 都匀旅游必去景点 都匀旅游景点 都匀到贵阳火车 都匀到贵阳火车时刻表 贵阳到都匀火车时刻表 都匀旅游攻略 贵州都匀市是不是很穷 都匀影视基地门票多少 都匀剑江旅游 都匀20万以下的二手房 都匀整形医院 都匀妇科医院 都均 都云 都可以用英语怎么说 连锁奶茶 广西益禾堂奶茶代理 茶道夫 鲜语 都嘟脱口秀全集51集 都嘟一夏特别节目 嘟臀传说by无先生 嘟当曼 嘟组词