C 語言中變數的作用範圍

了解作用範圍在 C 語言中的定義與運作方式。 在 C 語言程式中,當你宣告一個變數時,其作用範圍會根據你宣告的位置而有所不同。 這表示該變數在某些地方可用,但在其他地方則無法存取。 根據位置,變數可分為兩種類型: 全域變數 區域變數 以下是宣告於函式內部的區域變數範例: int main(void) { int age = 37; } 區域變數只能在函式內部存取,當函式結束時,它們將停止存在。它們會被從記憶體中釋放(但有些例外情況)。 而若在函式外部宣告的變數則為全域變數,像是以下範例: int age = 37; int main(void) { /* ... */ } 全域變數可在程式的任何函式中存取,並且在程式執行期間一直可用,直到結束。 我提到區域變數在函式結束後將不再可用。 這是因為預設情況下,區域變數是在堆疊(stack)上宣告的,除非你使用指標將其顯式配置於堆積中,但這樣你就得自行管理記憶體。

C變數和類型

初次接觸C變數和基本類型的介紹 C是一種靜態類型語言。 這意味著任何變數都有一個關聯的類型,而且此類型在編譯時已知。 這與在Python、JavaScript、PHP和其他解釋語言中操作變量的方式非常不同。 在C中創建變量時,您必須在聲明時指定變量的類型。 在此示例中,我們使用類型int對變量age進行初始化: int age; 變量名可以包含任何大小寫字母,可以包含數字和下劃線字符,但不能以數字開頭。AGE和Age10都是有效的變量名,1age則無效。 您也可以在聲明時初始化變量,並指定初始值: int age = 37; 定義變量後,您可以在程序代碼中使用它,並隨時更改其值,例如使用=運算符,就像在age = 100;中一樣,前提是新值具有相同的類型。 在這種情況下: #include <stdio.h> int main(void) { int age = 0; age = 37.2; printf("%u", age); } 編譯器將在編譯時拋出警告,並將十進制數字轉換為整數值。 C的內置數據類型包括int、char、short、long、float、double和long double。讓我們更深入了解這些類型。 整數數字 C為我們提供以下類型來定義整數值: char int short long 大多數情況下,您可能會使用int來存儲整數。但在某些情況下,您可能希望選擇另外3個選項之一。 char類型通常用於存儲ASCII表中的字母,但也可以用來容納從-128到127的小整數。它至少占1個字節。 int至少占2個字節。 short至少占2個字節。 long至少占4個字節。 正如您所看到的,對於不同環境,我們無法保證相同的值。我們只有一個指示。問題在於每種數據類型中可以存儲的確切數字取決於實現和體系結構。 我們保證short不會比int長,并且保證long不會比int短。 美國國家標準協會(ANSI)的C規範標準確定了每種類型的最小值,幸運的是,由於此規範,我們至少可以知道我們可以期望擁有的最小值。 如果您在Arduino上編程C,不同的開發板將具有不同的限制。 在Arduino Uno板上,int存儲2字節值,範圍從-32,768到32,767。在Arduino MKR 1010上,int存儲4字節值,範圍從-2,147,483,648到2,147,483,647。相差很大。 在所有Arduino板上,short存儲2字節值,範圍從-32,768到32,767。long占用4字節,范围从-2,147,483,648到2,147,483,647。 無符號整數 對於上述所有數據類型,我們可以在前面加上unsigned以將範圍從0開始,而不是負數。在許多情況下,這可能是有意義的。 unsigned char的範圍從0到至少255 unsigned int的範圍從0到至少65,535 unsigned short的範圍從0到至少65,535 unsigned long的範圍從0到至少4,294,967,295 溢出問題 鑒於所有這些限制,可能會出現一個問題:我們如何確保我們的數字不超過限制?如果超過限制我們會得到什麼結果? 如果您具有unsigned int數字為255,並將其增加,您將得到256作為結果。這是可以預料的。 如果您的unsigned char數字為255,並將其增加,您將得到0作為結果。它會從初始可能值重新開始計算。...

Go 中的指標

假設你有一個變數: age := 20 使用 &age 可以取得這個變數的指標,也就是它在記憶體裡的位址。 當你有了這個變數的指標後,可以使用 * 運算子來取得它指向的值: age := 20 ageptr := &age agevalue := *ageptr 這在你想要呼叫一個函式並將該變數作為參數傳遞時很有用。預設情況下,Go 會在函式中複製該變數的值,所以這不會改變 age 的值: func increment(a int) { a = a + 1 } func main() { age := 20 increment(age) //age 仍然是 20 } 你可以使用指標來解決這個問題: func increment(a *int) { *a = *a + 1 } func main() { age := 20 increment(&age) //age 現在變成了 21 }

JavaScript 變數

變數是指向識別符的字面值,因此您可以在程序中引用並使用它。了解如何使用 JavaScript 声明一个变量。 JavaScript 變數介紹 使用 var 使用 let 使用 const JavaScript 變數介紹 變數是指向識別符的字面值,因此您可以在程序中引用並使用它。 JavaScript 中的變數沒有任何附加的類型。一旦您將特定的字面值類型分配給變量,您可以稍後將變量重新分配給任何其他類型,而不會出現類型錯誤或任何問題。 這就是為什麼有時會將 JavaScript 稱為“未命名”的原因。 在使用變量之前,必須先聲明變量。有三種方式可以實現這一點,使用 var,let 或 const,而這三種方式在稍後與變量互動方面有所不同。 使用 var 在 ES2015 之前,var 是定義變量的唯一構造。 var a = 0 如果忘記添加 var,就會將值分配給未聲明的變量,結果可能會有所不同。 在開啟嚴格模式的現代環境中,您將收到一個錯誤。在較舊的環境中(或在未開啟嚴格模式的情況下),這將初始化該變量並將其分配給全局對象。 如果在聲明變量時未初始化該變量,則該變量將具有 undefined 的值,直到您將值分配給它。 var a //typeof a === 'undefined' 您可以多次重新聲明變量以覆蓋它: var a = 1 var a = 2 您也可以在同一語句中同時聲明多個變量: var a = 1, b = 2 作用域是變量可見的代碼部分。 使用 var 在任何函數外部初始化的變量將被分配給全局對象,具有全局作用域並且在任何地方都可見。使用 var 在函數內部初始化的變量將分配給該函數,具有局部作用域並且僅在其中可見,就像函數參數一樣。 在具有相同名稱的全局變量的函數中定義的任何變量將優先於全局變量,遮蔽它。 重要的是要理解,塊(由一對花括號識別)不定義新的作用域。只有在創建函數時才會創建新的作用域,因為 var 沒有塊作用域,而是函數作用域。...

Linux指令:export

快速指南介紹了“export”指令,該指令用於將變量導出到子進程中 “export”指令用於將變量導出到子進程中。 這意味著什麼呢? 假設您以以下方式定義了一個名為TEST的變量: TEST="test" 您可以使用echo $TEST來打印其值: 但是,如果您嘗試在名為script.sh的文件中定義一個包含上述命令的Bash腳本: 然後,您設置chmod u+x script.sh,並使用./script.sh執行此腳本,echo $TEST將不打印任何內容! 這是因為在Bash中,TEST 變量是在shell本地定義的。在執行shell腳本或其他命令時,將啟動一個子shell來執行它,該子shell不包含當前shell的本地變量。 為了使該變量在子shell中可用,我們需要使用以下方式定義TEST變量: export TEST="test" 嘗試這樣做,現在運行./script.sh應該會打印出“test”: 有時您需要將內容附加到變量中。這在 PATH變量中經常使用。您可以使用以下語法: export PATH=$PATH:/new/path 通常在以這種方式創建新變量時使用export,同樣地,當使用Bash在.bash_profile或.bashrc配置文件中創建變量時,或者使用Zsh在.zshenv中創建變量時也要使用export。 要刪除一個變量,可以使用 -n 選項: export -n TEST 調用export而不帶任何選項將列出所有導出的變量。 export指令適用於Linux、macOS、WSL以及任何具有UNIX環境的地方。

Python常量

Python沒有強制變量成為常量的方式。 最接近的方法是使用枚舉(enum): class Constants(Enum): WIDTH = 1024 HEIGHT = 256 然後可以使用例如Constants.WIDTH.value來獲取每個值。 這樣的值是無法重新賦值的。 另外,如果你想依賴命名慣例,可以遵循這個:將永遠不會更改的變量以大寫來聲明: WIDTH = 1024 沒有人會阻止覆蓋這個值,而Python也不會阻止這樣的操作。 這是大部分Python代碼所使用的方式。

Swift 元組

本教程屬於 Swift 系列。 元組用於將多個值分組成一個集合。例如,我們可以聲明一個包含 String 和 Int 值的變量 dog: let dog: (String, Int) 然後我們可以用名字和年齡來初始化它們: let dog: (String, Int) = ("Roger", 8) 但是與任何其他變量一樣,類型可以在初始化期間推斷出來: let dog = ("Roger", 8) 您可以使用命名元素: let dog = (name: "Roger", age: 8) dog.name //"Roger" dog.age //8 一旦定義了一個元組,您可以以以下方式將其解構到單個變量中: let dog = ("Roger", 8) let (name, age) = dog 如果您只需要獲取其中一個值,可以使用特殊的底線關鍵字忽略其他值: let dog = ("Roger", 8) let (name, _) = dog 元組是一個非常有用的工具,可以滿足各種需求。 最明顯的一個需求是以簡潔的方式分組相似的數據。 另一個需求是從函數返回多個項目。函數只能返回單個項目,因此元組是一種方便的結構。 另一個元組所允許的有用功能是交換元素: var a = 1 var b = 2 (a, b) = (b, a) // a == 2 // b == 1

如何在 bash 和 zsh 中設置環境變數

在Bash和zsh上操作是相同的,唯一的區別是要分別使用.bashrc和.zshrc來保存它們。 在 shell 中設置環境變數的方法是一樣的: $ export VARIABLE=something 要確定已設置成功,輸入以下命令: $ $VARIABLE 如果你編輯了一個點文件,要使更改應用於當前的 shell,可以使用source .dotfile。 這適用於 Bash 和 Zsh。 對於 Fish,你需要在前面加上 env: env API\_KEY=123123 node app.js