社区
C语言
帖子详情
void 类型的函数 return;有返回什么吗?
善良超锅锅
2011-12-07 11:14:38
今天在《C语言深度剖析》上看到这个问题,我不能肯定。
return的作用是结束一个函数并返回后面跟着的值,但void类型的函数return是不是只有结束函数的作用?
return;真的没返回什么吗?
...全文
3195
23
打赏
收藏
void 类型的函数 return;有返回什么吗?
今天在《C语言深度剖析》上看到这个问题,我不能肯定。 return的作用是结束一个函数并返回后面跟着的值,但void类型的函数return是不是只有结束函数的作用? return;真的没返回什么吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小清新爱大光明
2011-12-07
打赏
举报
回复
强制结束函数而已,返回到调用此函数的地方
pengzhixi
2011-12-07
打赏
举报
回复
return;就是没返回任何值。
狂且
2011-12-07
打赏
举报
回复
木有返回. 所以加 return; 和不加 木有区别.
hzylh
2011-12-07
打赏
举报
回复
没有返回值。。。
机智的呆呆
2011-12-07
打赏
举报
回复
从语义上来讲木有。
Arnold9009
2011-12-07
打赏
举报
回复
这个真没有
void函数,在函数结束的时候,其实是隐含执行return的
奋斗小青年
2011-12-07
打赏
举报
回复
楼主这个真么有,只是说明函数退出了
善良超锅锅
2011-12-07
打赏
举报
回复
那这本书上提这个问题干啥?搞的我草木皆兵
nickowen
2011-12-07
打赏
举报
回复
和你预期的一样
AIGPTchina
2011-12-07
打赏
举报
回复
真的没返回值,就是结束函数。
duke56
2011-12-07
打赏
举报
回复
只是返回调用该函数的地方继续执行代码
善良超锅锅
2011-12-07
打赏
举报
回复
这个真是贴中贴!
如果你尝试访问返回的地此,肯定会出错
[Quote=引用 12 楼 xhz2000 的回复:]
看你说到return了 我也提一个问题 也是《C语言深度解剖》里面的 他说return不能返回指向“栈内存”的指针 因为该内存在函数体结束时被销毁~~
#include<stdio.h>
char *func(void)
{
char str[30] = {0};
return str;
}
int main(void)
{
printf("%p\n", func())……
[/Quote]
赵4老师
2011-12-07
打赏
举报
回复
1
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
提醒:
“学习用汇编语言写程序”
和
“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
猪头小哥
2011-12-07
打赏
举报
回复
也就是说这么用会存在潜在危险 出错的就是随机的 当程序很大 需要内存很多的时候 是吧
[Quote=引用 17 楼 pqpqr 的回复:]
你返回的是函数内分配的“栈内存”,函数结束后,str所指向的内存会被系统回收,
str就变成野指针了。你输出正确只能说明被释放的那块内存还没有被使用。
引用 16 楼 zhutou100hao 的回复:
那是野指针了 就一定会有错误啦~~
引用 14 楼 xhz2000 的回复:
char *func(void)
{
char str[30] = {0};
return ……
[/Quote]
小清新爱大光明
2011-12-07
打赏
举报
回复
你返回的是函数内分配的“栈内存”,函数结束后,str所指向的内存会被系统回收,
str就变成野指针了。你输出正确只能说明被释放的那块内存还没有被使用。
[Quote=引用 16 楼 zhutou100hao 的回复:]
那是野指针了 就一定会有错误啦~~
引用 14 楼 xhz2000 的回复:
char *func(void)
{
char str[30] = {0};
return str;
}
函数结束后char str[30] = {0}; 这个已经出栈了! 你说会是野指针吗?
[/Quote]
猪头小哥
2011-12-07
打赏
举报
回复
那是野指针了 就一定会有错误啦~~
[Quote=引用 14 楼 xhz2000 的回复:]
char *func(void)
{
char str[30] = {0};
return str;
}
函数结束后char str[30] = {0}; 这个已经出栈了! 你说会是野指针吗?
[/Quote]
yah606060
2011-12-07
打赏
举报
回复
在汇编里面应该就是一个 ret 指令 貌似 更新程序计数器
xhz2000
2011-12-07
打赏
举报
回复
char *func(void)
{
char str[30] = {0};
return str;
}
函数结束后char str[30] = {0}; 这个已经出栈了! 你说会是野指针吗?
猪头小哥
2011-12-07
打赏
举报
回复
[Quote=引用 12 楼 xhz2000 的回复:]
看你说到return了 我也提一个问题 也是《C语言深度解剖》里面的 他说return不能返回指向“栈内存”的指针 因为该内存在函数体结束时被销毁~~
#include<stdio.h>
char *func(void)
{
char str[30] = {0};
return str;
}
int main(void)
{
printf("%p\n", func())……
[/Quote]
数组的内存空间是系统自动分配的,怎么会有野指针?再说我也初始化了~
xhz2000
2011-12-07
打赏
举报
回复
看你说到return了 我也提一个问题 也是《C语言深度解剖》里面的 他说return不能返回指向“栈内存”的指针 因为该内存在函数体结束时被销毁~~
#include<stdio.h>
char *func(void)
{
char str[30] = {0};
return str;
}
int main(void)
{
printf("%p\n", func());
}
这是哪个例子 我运行时也没出现什么问题,求解释~~
这个应该是个野指针了! 没有问题! 只是你这个栈指针还没有被另一个函数使用到而已,
应该会造成不确定的错误!
加载更多回复(1)
c++ primer第五版第6章答案
c++ primer第五版第6章答案
c语言中
void
明明没有
return
为什么还可以使用结果,为什么要在
void
的
函数
里面使用
return
语句呢?(C语言)...
为什么要在
void
的
函数
里面使用
return
语句呢?(C语言)來源:互聯網2010-01-27 23:45:28評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言問題描述:我看一个C语言的网络教程上面有这样一句话:在
void
的
函数
里面仍然应该出现
return
语句,真的是这样吗?为什么呢?參考答案:
return
表示中止当前
函数
的运行,并将操作权
返回
给调用者。如...
关于
void
的总结
一.
void
在英文中作为名词的解释为 "空虚、空间、空隙", 而在 C 语言中,
void
被翻译为"无
类型
",相应的
void
* 为"无
类型
指针"。
void
* fun( ) ; //声明一个
返回
值是任意
类型
的指针 的
函数
fun()
void
vfun( ) ; //声明一个没有
返回
值 的
函数
vfun() 二.对于
void
是无
类型
(不确定
类型
),无
类型
可以包含有
类型
关于
void
函数
1.没有
返回
值的
return
语句只能用在
返回
类型
是
void
的
函数
中。
返回
void
的
函数
不要求非得...
java
函数
void
返回
值是_零基础java入门教程
函数
function实例化格式案例
void
返回
值说明...
java基础自学入门:
函数
:定义在类中的具有特定功能的一段独立小程序有时候我们
函数
也称为方法,平时我们听到的
函数
也就是方法,方法也是
函数
,每个人的叫法不同,所以这里要切记。老程序员别露馅哟。哈哈哈哈
函数
的英文单词function这个一定要认识下面实例化下
函数
的格式:修饰符
返回
值
类型
函数
名(参数
类型
形参1,参数
类型
形参2, ……){执行语句;
return
返回
值;}
返回
值:
函数
运行后的...
C++基础---
函数
的
返回
类型
1.
函数
的
返回
类型
1.1
函数
的
返回
类型
C++可以把
函数
分为有
返回
值
函数
和无
返回
值
函数
两种。
函数
的
返回
类型
:即
函数
返回
值的
类型
; 代码示例:
void
func()//无
返回
值
函数
{ if(boolean_expression) {
return
;//让
函数
停止运行 } } int func()//有
返回
值
函数
{ if(boolean_express
C语言
70,011
社区成员
243,256
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章