跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

C++ 基础语法入门:从 Hello World 到变量作用域

综述由AI生成C++ 基础语法涵盖命名空间、面向对象特性、数据类型及变量作用域等核心概念。通过 Hello World 示例引入,详解了内置与派生数据类型、类型转换机制,并结合简易计算器实战演示了输入输出与逻辑控制。重点讲解了局部与全局变量的生命周期差异,帮助初学者建立扎实的 C++ 编程基础。

kaikai发布于 2026/3/25更新于 2026/6/1324 浏览
C++ 基础语法入门:从 Hello World 到变量作用域

C++ 简介

C++ 是一种静态类型的、编译式的、通用的编程语言,支持过程化编程、面向对象编程和泛型编程。它被认为是一种中级语言,综合了高级语言和低级语言的特点。

C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。最初命名为带类的 C,后来在 1983 年更名为 C++。它是 C 的一个超集,任何合法的 C 程序都是合法的 C++ 程序。

核心特性

  • 封装:将数据和方法组合在一起,对外部隐藏实现细节,只公开接口,提高安全性和灵活性。
  • 继承:从已有类中派生出新类,新类具有已有类的属性和方法,并可扩展或修改,提高代码复用性。
  • 多态:同一种操作作用于不同的对象,可以有不同的解释和实现,提高代码的灵活性和可读性。
  • 抽象:从具体实例中提取共同特征,形成抽象类或接口,让程序员专注于高层次设计。

标准库与 ANSI 标准

标准的 C++ 由三个重要部分组成:核心语言(提供构件块)、C++ 标准库(提供文件、字符串等操作函数)以及标准模板库(STL,提供数据结构操作方法)。ANSI 标准确保了 C++ 的便携性,使代码能在不同操作系统上通过编译。

命名空间

在大规模程序设计中,为了避免标识符命名冲突,标准 C++ 引入了 namespace(命名空间)。

#include <iostream>
using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

注意:endl 中的最后一个字符是字母小写 L,不是数字 1。

命名空间示例

namespace A {
    int a = 100;
}

namespace B {
    int a = 200;
}

void test() {
    cout << "A 中 a = " << A::a << endl; // 输出 100
    cout << "B 中 a = " << B::a << endl; // 输出 200
}

初学者可先掌握基本用法,后续再深入探讨作用域解析的细节。

基本语法结构

C++ 程序由对象集合组成,对象通过调用彼此的方法进行交互。以下是程序的典型结构:

#include <iostream> // 包含输入输出流头文件
using namespace std; // 使用标准命名空间

int main() { // 主函数,程序从这里开始执行
    cout << "Hello World"; // 输出消息
    return 0; // 终止函数,返回 0
}

注释

C++ 支持单行和多行注释,编译器会忽略它们。

  • 单行注释://
  • 多行注释:/* ... */

数据类型

C++ 提供了丰富的内置类型和用户自定义类型。变量保留的是它所存储值的内存位置。

基本内置类型

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void
宽字符型wchar_t

类型修饰符

修饰符描述示例
signed有符号类型(默认)signed int x = -10;
unsigned无符号类型unsigned int y = 10;
short短整型short int z = 100;
long长整型long int a = 100000;
const常量,值不可修改const int b = 5;
volatile禁止编译器优化volatile int c = 10;

常见类型大小参考

注意:不同系统会有所差异,一字节为 8 位。默认情况下,int、short、long 都是带符号的。

数据类型大小(字节)范围/取值示例
bool1true 或 false
char1-128 到 127
int4-2,147,483,648 到 2,147,483,647
float4约 ±3.4e±38
double8约 ±1.7e±308

C++11 新增类型

数据类型描述示例
auto自动类型推断auto x = 10;
nullptr空指针常量int* ptr = nullptr;
std::initializer_list初始化列表类型std::initializer_list<int> list = {1, 2, 3};

派生与标准库类型

除了基本类型,还有数组、指针、引用、结构体、类等派生类型,以及 std::string、std::vector 等标准库容器。

变量定义与作用域

定义与声明

变量定义告诉编译器创建变量的存储,而声明向编译器保证变量存在。

int i, j, k; // 定义并声明
extern int a, b; // 外部声明
int d = 3, f = 5; // 定义并初始化

左值与右值

  • 左值(lvalue):指向内存位置的表达式,可出现在赋值号左边。
  • 右值(rvalue):存储在内存地址的数值,不能赋值。
int g = 20; // 有效
10 = 20;    // 无效,编译错误

作用域分类

  1. 局部作用域:在函数或代码块内部声明,仅在该范围内有效。
  2. 全局作用域:在所有函数外部声明,整个程序可用。
  3. 块作用域:在 {} 代码块内声明,块结束即销毁。
  4. 类作用域:在类内部声明,可通过类名访问。
#include <iostream>
int main() {
    int a = 10;
    {
        int a = 20; // 块作用域变量
        std::cout << "块变量:" << a << std::endl;
    }
    std::cout << "外部变量:" << a << std::endl;
    return 0;
}

注意:如果在内部作用域声明同名变量,内部变量将覆盖外部变量。

实战:简易计算器

通过编写一个控制台计算器,我们可以综合运用输入输出、逻辑判断和函数定义。

#include <iostream>
#include <limits>

using namespace std;

// 函数声明
double add(double a, double b);
double subtract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);

int main() {
    double num1, num2, result;
    char op;
    char continueFlag = 'y';

    while (continueFlag == 'y' || continueFlag == 'Y') {
        cout << "===== 简易计算器 =====" << endl;
        cout << "请输入第一个数字:";
        cin >> num1;

        if (cin.fail()) {
            cout << "输入错误!请输入有效数字。" << endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            continue;
        }

        cout << "请输入运算符 (+、-、*、/):";
        cin >> op;

        cout << "请输入第二个数字:";
        cin >> num2;

        if (cin.fail()) {
            cout << "输入错误!请输入有效数字。" << endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            continue;
        }

        switch (op) {
            case '+':
                result = add(num1, num2);
                cout << num1 << "+" << num2 << "=" << result << endl;
                break;
            case '-':
                result = subtract(num1, num2);
                cout << num1 << "-" << num2 << "=" << result << endl;
                break;
            case '*':
                result = multiply(num1, num2);
                cout << num1 << "*" << num2 << "=" << result << endl;
                break;
            case '/':
                if (num2 == 0) {
                    cout << "错误:除数不能为 0 !" << endl;
                } else {
                    result = divide(num1, num2);
                    cout << num1 << "/" << num2 << "=" << result << endl;
                }
                break;
            default:
                cout << "错误:无效的运算符! " << endl;
                break;
        }

        cout << "是否继续计算?(y/n):";
        cin >> continueFlag;
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "------------------------" << endl;
    }

    cout << "计算器已退出,感谢使用! " << endl;
    return 0;
}

// 函数定义
double add(double a, double b) { return a + b; }
double subtract(double a, double b) { return a - b; }
double multiply(double a, double b) { return a * b; }
double divide(double a, double b) { return a / b; }

学习 C++ 的关键在于理解概念而非死记硬背。通过实践上述示例,你可以更好地掌握变量管理、类型转换及流程控制。

目录

  1. C++ 简介
  2. 核心特性
  3. 标准库与 ANSI 标准
  4. 命名空间
  5. 命名空间示例
  6. 基本语法结构
  7. 注释
  8. 数据类型
  9. 基本内置类型
  10. 类型修饰符
  11. 常见类型大小参考
  12. C++11 新增类型
  13. 派生与标准库类型
  14. 变量定义与作用域
  15. 定义与声明
  16. 左值与右值
  17. 作用域分类
  18. 实战:简易计算器
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 区块链|WEB3:时间长河共识算法(Time River Consensus Algorithm)
  • SGBM 半全局块匹配算法流程详解
  • 基于 Vue 3 的情侣双人飞行棋游戏前端实现
  • C 语言数据结构:单链表详解与实现
  • Ubuntu 22.04 部署 FastAPI + Uvicorn + Nginx 生产级 Python Web 服务
  • 渗透测试入门指南
  • Seedance 2.0 多模态 AI 视频创作操作指南
  • VoxCPM-1.5-TTS-WEB-UI 基于镜像源快速部署指南
  • Python 观察者模式:构建解耦的事件系统
  • GitHub 全界面中文化:中文插件安装与配置指南
  • 归并排序算法原理与 Java 实现
  • ChatGPT 实用技巧:文本与数据的结构化方法解析
  • 2025-0xGame Web 安全解题思路汇总
  • LightRAG:基于图结构索引的智能检索增强生成系统
  • LazyLLM 多 Agent 应用全流程实践:从源码部署到可视化 Web 调试的低代码方案
  • Llama-Factory 训练中文小说续写模型的实践心得
  • 网络安全工作者的黑客精神与行业生态价值
  • 开源机器人 AI 框架 LeRobot 入门与实践
  • MySQL 内置函数详解
  • C++ 继承机制详解:语法、对象模型与虚拟继承

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online