A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Freedam 中级黑马   /  2014-4-9 02:07  /  1514 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Freedam 于 2014-4-10 17:18 编辑
  1. #include<stdio.h>

  2. void num(int n)
  3. {
  4.     n = 0;
  5.     return;
  6. }

  7. int main()
  8. {
  9.      int i = 0;
  10.      int j = 0;
  11.      num(i);
  12.      return 0;
  13. }
复制代码
这段代码可以编译通过并运行,但是让我不理解的是num函数内的return居然编译通过并运行了,所以我想问一下num这个函数是空类型的也就是没有返回值,那return加上之后为啥程序没有出错?还有如果return正常运行了,会返回什么值。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

6 个回复

倒序浏览
void num(int n);表示函数没有返回值,而函数中的return;表示函数结束并返回(此处的返回是返回到调用的地方),return后面什么也没有,就表示什么值也不返回。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
看你上面的代码
  1. #include<stdio.h>

  2. void num(int n)
  3. {
  4.     n = 0;
  5.     return;
  6. }
复制代码

  
其中 num  函数的返回值类型是void。
而return;这样的写法就是什么也不返回。不是每个函数必须有返回值的,当没有是return就可以省略。
他等价与下面:
  1. #include<stdio.h>

  2. void num(int n)
  3. {
  4.     n = 0;
  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
三楼说的没错
为什么不执行retrun;这句话呢,是因为
在程序中,如果单独写:     3;   a;   return; 都不会报错,但是都不会执行
原因在于,常量的话没有运算符,方法名的话没有()括号

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
return;表示什么也不返回 。
回复 使用道具 举报
一般情况下函数结束的标志有两个,一个是遇到return,一个是遇到函数末尾的大括号。函数中的return一般是结束函数的标志,主函数一般的返回值是0,这是告诉编译器任务结束的标志。而一般无返回值的函数并不是没有return,而是在无返回值的情况下可以将return省略不写。默认的是有return的。
回复 使用道具 举报
理解了 谢谢楼上的大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马