以前基本上不用,现在看代码还时不时会碰到goto语句,记录一下。
goto 语句是一种无条件流程跳转语句,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。
1. goto可以跳出多层循环。
#include <stdio.h>
int main(int argc, char const *argv[])
{
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(j==3)
{
goto location;
}
printf("j=%d\n",j);
}
}
location: //这里一般顶格写,注意有冒号
printf("goto跳出循环,到达了这里。\n");
return 0;
}
2.使用goto可以很好地进行程序反操作
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int *a = (int *)malloc(sizeof(int));
if(a==NULL)
exit(1);
int *b = (int *)malloc(sizeof(int));
if(b==NULL)
goto locationb;
int *c = (int *)malloc(sizeof(int));
if(c=NULL)
goto locationc;
int *d = (int *)malloc(sizeof(int));
if(d=NULL)
goto locationd;
locationd:
free(c);
locationc:
free(b);
locationb:
free(a);
return 0;
}