C语言深度剖析--读书笔记6_return关键字
来源:互联网 发布:深圳网络教育本科 编辑:程序博客网 时间:2024/05/29 19:54
1.在无返回值的函数中,使用return语句:
(1)无返回值的函数中,return后面不带有返回值,合法,表示跳出当前函数体
例1:
void func1()
{
printf("in func1: before return\n");
return; //警告: 在无返回值的函数中,使用return语句,但可以编译通过并执行。
printf("in func1: after return\n");
}
int main(void)
{
func1();
printf("back to main\n");
return 0;
}
打印结果:
in func1: before return
back to main
(2)无返回值的函数中,return后面带有返回值,是不允许的。
例2:
void func1()
{
return 1; // 编译器会发出警告,但仍可执行。在func1运行结束的时候,并不会把1返回给main函数.
}
int main(void)
{
func1(); //警告:在无返回值的函数中,return后面带有返回值。(但是可以编译通过,运行)
return 0;
}
如果把main函数中的第一行语句改为:int i =func1(); 那么报错,编译不通过。因为func1运行完,并没有把1返回给main函数
2.在有返回值的函数中,使用return
(1)return后面不仅能返回数值,还可以是表达式。
例3:
int func1()
{
return printf(" func1 returns a statement!\n"); //注意,这里return一个表达式,而没有返回具体的值。
}
int main(void)
{
printf("func1() returns to main: %d\n",func1()); //把func1的返回值打印出来
return printf("main returns a statement!\n"); //在main函数中也可以返回一个表达式
}
打印结果:
func1 returns a statement!
func1 returns to main:5 (这里的5,应该是编译器随机返回的一个正整数)
main return s a statement!
(2)return语句不可返回指向栈内存的指针,因为该指针在函数提结束时即被销毁。
例4:
char * func1(void)
{
char buf[10]; //buf数组,是局部的。即数组内存地址在函数调用栈中,当函数运行结束后,即销毁。
return buf; //数组销毁后,返回的buf指针,没有意义。因为它指向一个不存在的内存区域。
}
这里要注意与普通返回值的函数作区别。
例5:
int func1()
{
int i=5;
return i; //虽然i也是局部变量,函数结束的时候也要被销毁。但是程序会把i的值暂存起来,用于返回给调用它的函数。
} //func1 函数实际上,返回的并不是i,而是i的值
- C语言深度剖析--读书笔记6_return关键字
- C语言深度剖析--读书笔记_void 关键字
- 读书笔记:c语言深度剖析之关键字
- C语言深度剖析--读书笔记2_static关键字
- C语言深度剖析--读书笔记4_signed/unsigned关键字
- C语言深度剖析--读书笔记7_const关键字
- struct关键字---C语言深度剖析读书笔记9
- c语言深度剖析 -- 读书笔记
- C语言深度剖析读书笔记
- C语言深度剖析读书笔记
- 《c语言深度剖析》读书笔记
- C深度剖析读书笔记-第一章关键字
- C语言深度剖析--读书笔记3_sizeof
- C语言深度剖析读书笔记(一)
- C语言深度剖析——读书笔记
- C语言深度剖析——读书笔记
- C语言深度剖析学习心得之关键字
- 《c语言深度剖析》整理--关键字
- Linux服务器集群系统(四) LVS集群的负载调度
- fopen/fwriite/fseek/ftell/fread/fclose等函数的使用方法
- 51cto感想
- oracle不能打开数据库实例问题 错误(01033)
- Centos make install mysql5.6
- C语言深度剖析--读书笔记6_return关键字
- MVC4 WebAPI(二)——Web API工作方式
- 用CLLocationManager得到当前城市和国家的名称
- 在CSDN社团中学到的
- ListView的理解
- oracle 修改日志大小及增加日志成员
- havlenapetr-FFMpeg OnVideoSizeChangedListener接口的实现
- MIPS在X86上的模拟器--Spim编译器
- 把游戏作弊技术转移到软件破解