例如,char在 for 回圈中定義了一個命名的“字符”。我可以使用charfor 回圈的外部嗎?
代碼:
#include <iostream>
int main()
{
for(int i = 0; i < 5; i )
{
char character = 'a'; // Char defined in for loop
}
std::cout<<character; // Can this be made valid?
return 0;
}
uj5u.com熱心網友回復:
是的,您可以在 C 11 及更高版本中使用 lambda 間接執行此操作:
#include <iostream>
#include <functional>
int main()
{
std::function<char()> fun;
for(int i = 0; i < 5; i )
{
char character = 'a'; // Char defined in for loop
fun = [=](){ return character; };
}
std::cout << fun() << std::endl;
return 0;
}
外部作用域無法訪問character,但可以呼叫在該作用域中捕獲的 lambda,并且該 lambda 的主體character在作用域內,并且可以為我們回傳它。
在具有真正 lambda 的語言中,lambda 將訪問實際character變數;在該范圍內創建的原始版本。在 C 中,=in[=]告訴 lambda 通過復制它們來捕獲它所參考的區域變數。因此return character實際上并不是訪問原始character檔案(由于塊終止,它不再存在),而是 lambda 物件攜帶的副本。
uj5u.com熱心網友回復:
否。在回圈或函式內定義的變數的范圍就在該回圈或函式內。
如果你想擁有一個變數,你可以在回圈中設定一個值,但也可以訪問回圈之外,你可以創建一個全域變數(或者只是一個范圍更廣的變數)。只需在范圍回圈之外定義變數并將其設定為回圈中所需的值。
uj5u.com熱心網友回復:
不。因為在回圈內宣告的變數具有區域范圍,只能在回圈內訪問
uj5u.com熱心網友回復:
不,如果變數的定義在回圈內,則不能在回圈外使用它
uj5u.com熱心網友回復:
NO 作為“在一個范圍內宣告的變數永遠不能在該范圍之外使用”。永遠記住這一點!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/511264.html
標籤:C for循环变量
上一篇:.net程式員的android studio 初體驗 (環境設定2022年10月)
下一篇:如何更新鍵是變數的字典?
