Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ If...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 作用域 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何做

C++ 相加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 例子

C++ 例子 C++ 现实生活中的例子 C++ 编译器 C++ 练习 C++ 问答 C++ 证书


C++ 变量作用域


现在您已经了解了函数的工作原理,学习变量如何在函数内部和外部起作用非常重要。

在 C++ 中,变量仅在其创建的区域内可访问。这被称为 **作用域**。


局部作用域

在函数内部创建的变量属于该函数的 *局部作用域*,并且只能在该函数内部使用。

示例

void myFunction() {
  // 属于 myFunction 的局部变量
  int x = 5;

  // 打印变量 x
  cout << x;
}

int main() {
  myFunction();
  return 0;
}
自己试一试 »

*局部变量* 无法在它所属的函数外部使用。

如果尝试在函数外部访问它,则会发生错误。

示例

void myFunction() {
  // 属于 myFunction 的局部变量
  int x = 5;
}

int main() {
  myFunction();

  // 在主函数中打印变量 x
  cout << x;
  return 0;
}
自己试一试 »

全局作用域

在函数外部创建的变量称为 **全局变量**,它属于 *全局作用域*。

全局变量在任何作用域内(全局和局部)都可用。

示例

在函数外部创建的变量是全局的,因此任何人都可以使用它。

// 全局变量 x
int x = 5;

void myFunction() {
  // 我们可以在此处使用 x
  cout << x << "\n";
}

int main() {
  myFunction();

  // 我们也可以在此处使用 x
  cout << x;
  return 0;
}
自己试一试 »

变量命名

如果您在函数内部和外部使用相同的变量名,C++ 会将它们视为两个独立的变量;一个在全局作用域(函数外部)可用,另一个在局部作用域(函数内部)可用。

示例

函数将打印局部 x,然后代码将打印全局 x

// 全局变量 x
int x = 5;

void myFunction() {
  // 局部变量与全局变量同名(x)
  int x = 22;
  cout << x << "\n"; // 指向局部变量 x
}

int main() {
  myFunction();

  cout << x; // 指向全局变量 x
  return 0;
}
自己试一试 »

但是,您应该避免在全局和局部变量中使用相同的变量名,因为这会导致错误和混淆。

一般来说,您应该谨慎使用全局变量,因为它们可以从任何函数访问和修改。

示例

更改 myFunctionx 的值

// 全局变量 x
int x = 5;

void myFunction() {
  cout << ++x << "\n"; // 将 x 的值加 1 并打印它
}

int main() {
  myFunction();

  cout << x; // 打印全局变量 x
  return 0;
}

// 现在 x 的值为 6(不再是 5)
自己试一试 »

结论

总之,尽可能使用局部变量(并使用良好的变量名)。这将使您的代码更容易维护和理解。但是,在处理现有 C++ 程序或与他人协作时,您可能会发现全局变量。因此,了解作用域的工作原理以及如何有效地使用它非常重要,以确保您的代码清晰且功能齐全。


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.