跳转语句_C/C++中的goto语句
goto 語句
無條件轉(zhuǎn)移控制流。
當(dāng)使用其他語句不可能將控制轉(zhuǎn)移到所需位置時使用。
語法
屬性(可選) goto 標號 ;
C++解釋
goto 語句將控制轉(zhuǎn)移到標號所指定的位置。goto 語句必須與它所用的 標號 處于相同的函數(shù)中,它出現(xiàn)于標號的前后均可。
若控制的轉(zhuǎn)移退出了任何自動變量的作用域(例如通過回跳到這種變量聲明之前的位置,或向前跳出作為變量作用域的復(fù)合語句),則為所有退出作用域的變量以其構(gòu)造順序的逆序調(diào)用析構(gòu)函數(shù)。
goto 不能將控制轉(zhuǎn)移到 try 塊或 catch 子句之內(nèi),但能將控制轉(zhuǎn)移離開 try 塊或 catch 子句(遵循上述有關(guān)作用域中的自動變量的規(guī)則)
若控制被轉(zhuǎn)移進入了任何自動變量的作用域(例如通過向前跳過聲明語句),則程序非良構(gòu)(不能編譯),除非進入作用域的所有變量擁有
(注意:相同規(guī)則適用于控制轉(zhuǎn)移的所有形式)
注意
在 C 編程語言中,goto 語句的限制較少,并且能進入除變長數(shù)組或可變修改指針之外的任何變量的作用域。
C解釋
goto 語句導(dǎo)致無條件跳轉(zhuǎn)(控制的轉(zhuǎn)譯)到前附具名 標號 (必須與 goto 語句出現(xiàn)于同一函數(shù)中)的語句,除非此跳轉(zhuǎn)會進入變長度數(shù)組或另一可變修改類型的作用域 (C99 起)。
標號 是一個后隨冒號( : )和一條語句的的標識符。標號是僅有的擁有函數(shù)作用域的標識符:能在其所出現(xiàn)于的函數(shù)中的任何位置使用它們(在 goto 語句中)。任何語句前可以有多個標號。
goto lab1; // OK :進入常規(guī)變量的作用域 int n = 5;lab1:; // 注意未初始化 n ,如同以 int n; 聲明 // goto lab2; // 錯誤:進入二個 VM 類型的作用域 double a[n]; // VLA int (*p)[n]; // VM 指針lab2:若 goto 離開 VLA 的作用域,則 VLA 會被解分配(而且可能會被再分配,若再度執(zhí)行其初始化):
{ int n = 1;label:; int a[n]; // 重分配 10 次,每次擁有不同的大小 if (n++ < 10) goto label; // 離開 VM 的作用域}示例
#include int main(void){ // goto 可用于簡單地離開多層循環(huán) for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { printf("(%d;%d)總結(jié)
以上是生活随笔為你收集整理的跳转语句_C/C++中的goto语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存条速度测试大揭秘,你知道几种方法?
- 下一篇: ios html 调试,使用iframe