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条回答
ddwl99
2020-01-24 07:36
return是跳出函数
就是释放堆栈中的内容。所有函数内建立的临时变量所占的地址都会没有。

break是跳出最近的一个循环

continue是继续下一个循环

例如
void fun1(void)
{
    int tmp = 0;
    for(; tmp < 20; tmp++)
    {
        i++;
        if(i > 10)
        {
            return;
         }
        
     }
}
这里面就是这个函数执行完,i应该等于11,前提是假设i为全局变量,从零开始

void fun2(void)
{
    int m = 0;
    int n = 0;

   for(;m < 5;m++)
    {
         while(n++ < 5)
         {
              if(i[m][n] <= 0)
              {
                    break;//进入这个if的时候,就意味着内层循环要结束了,进行下一个for循环,不会执行要下句话
               }
               i[m][n]--;
          }
        n = 0;
     }
}
前提是i为全局变量。
void fun3(void)
{
     int m = 0;
    int n = 0;

   for(;m < 5;m++)
    {
         while(n++ < 5)
         {
              if(i[m][n] <= 0)
              {
                    continue;//进入这个if的时候,就意味着本次循环要结束了,进行下一次的while循环
               }
               i[m][n]--;
          }
        n = 0;
     }

}
这个函数跟fun2基本一样,只是把break换成了continue。
其实fun3内的while函数的执行过程就是while(n++ < 5){if(i[m][n] > 0){i[m][n]--;}}.

例子举的有点不太恰当,呵呵。意思就这个意思。

其实最好不要乱使用GOTO语句。
另外回复12楼,C语言中也会出现越界的。那都是由于指针越界造成的。就是使用指针的时候一定要注意一下,不要乱指。空间用完就要赶快释放等等问题。

一周热门 更多>