C 局部變數和全域變數的差異:可見性:局部變數僅限於定義函數,而全域變數在整個程式中可見。記憶體分配:局部變數在堆疊上分配,而全域變數在全域資料區分配。作用域:局部變數在函數內,而全域變數在整個程式中。初始化:局部變數在函數呼叫時初始化,而全域變數在程式啟動時初始化。重新創建:局部變數在每次函數呼叫時重新創建,而全域變數僅在程式啟動時創建。
在C 中,局部變數和全域變數之間有著重要區別,理解這些區別對於編寫高效、易於維護的程式碼至關重要。
範例程式碼:
void myFunction() { int localVariable = 5; // 局部变量 // ... 使用 localVariable } int main() { myFunction(); // localVariable 无法访问,因为它不在 main() 函数的范围内 }
範例程式碼:
int globalVariable = 10; // 全局变量 void myFunction() { // ... 使用 globalVariable } int main() { // ... 使用 globalVariable }
特徵 | #局部變數 | 全域變數 |
---|---|---|
可見性 | 僅限於定義它們的函數 | 整個程式 |
生命週期 | 函數呼叫期間 | 程式執行期間 |
記憶體分配 | #在堆疊上 | 在全域資料區 |
作用域 | #在函數內 | 在整個程式中 |
初始化 | 函數呼叫時 | 程式啟動時 |
#重新建立 | 每當函數被呼叫時 | 僅在程式啟動時 |
#在下列範例中,局部變數name
僅在greet()
函數內使用,並且在每次函數被呼叫時都重新建立:
void greet(std::string name) { std::cout << "Hello, " << name << "!" << std::endl; } int main() { greet("John"); greet("Mary"); // 局部变量 name 将重新创建 }
在以下範例中,全域變數g_count
在整個程式範圍內可見,並且在每次函數被呼叫時都會被更新:
int g_count = 0; // 全局变量 void incrementCount() { g_count++; } int main() { incrementCount(); std::cout << "Count: " << g_count << std::endl; // 输出 1 incrementCount(); std::cout << "Count: " << g_count << std::endl; // 输出 2 }
以上是C++ 函數的局部變數和全域變數有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!