C语言中,if语句后面加return 的用法的疑问。

2020-01-21 21:34发布

有这么一段代码:
void xxx()
{
    if(rs_buf[0]=='$')
    {
        for(i=0;i<sizeof(GPS_GPRMC)-1;i++)
        {
            j=getuartdat();
            if(j<256)
            {
                rs_buf=(alt_u16)j;
                if(rs_buf!=GPS_GPRMC)
                return;
            }
        }
    }
}
当这句话成立: if(rs_buf!=GPS_GPRMC)
                return;

即return执行后,程序再怎样运行,是不是直接跳出了函数xxx,即return在这里的作用是结束函数的运行?
有点疑惑,请大侠指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
45条回答
380121850
2020-01-23 17:21
回复【9楼】hzr0071  
千万不要用return。还不如吧goto搬出来用。或者定义flag然后连续break。
return直接翻译成ret。其实函数最后都有寄存器出栈函数(汇编模式能看到)。return以后会跑偏的。不过控制pc、也可以人工跑偏用来写系统。
-----------------------------------------------------------------------

。。。。。。。。。。这个,是极个别芯片现象吧

按照一般在C里面,RETURN是函数返回,对应的一返回需要的指令串,不是单单一个RET

一周热门 更多>