C++入门知识大全(一)

简介: 教程来源 https://app-a87ujc988w01.appmiaoda.com/ C++由斯特劳斯特鲁普于1979年创建,是兼具高效与强大抽象能力的静态编译型语言。支持面向对象、泛型编程与RAII等特性,广泛应用于系统编程、游戏开发、高性能计算等领域。本指南涵盖环境搭建、基础语法、控制流等核心内容,助初学者夯实根基。

C++由Bjarne Stroustrup于1979年在贝尔实验室开始设计,最初称为“C with Classes”,1983年正式命名为C++。作为C语言的超集,C++在保持高效的同时,引入了面向对象、泛型编程、RAII、模板元编程等强大特性,成为系统编程、游戏开发、高性能计算、嵌入式系统等领域的首选语言。本文将为初学者提供一份全面的C++入门指南,从环境搭建到基础语法,从面向对象到标准库,助你构建扎实的编程基础。
a7b1db4f-eb2c-4b46-8883-ad94ea9e956d.png

一、初识C++:为什么学习C++?
1.1 C++是什么?
C++是一种静态类型、编译型、通用编程语言,支持面向过程、面向对象、泛型编程、函数式编程等多种范式。它以其零开销抽象的设计哲学著称,意味着你只为你使用的特性付出性能代价。

1.2 C++的核心优势
image.png
1.3 C++的应用领域
游戏开发:Unreal Engine、Unity底层

操作系统:Windows、Linux内核部分

高性能计算:科学计算、金融建模

数据库:MySQL、MongoDB核心

嵌入式系统:汽车、医疗设备

编译器/解释器:LLVM、V8引擎

二、环境搭建:工欲善其事,必先利其器
2.1 编译器安装
C++是编译型语言,需要将源代码编译为可执行文件。

Windows用户:

安装MinGW-w64或Visual Studio(推荐Visual Studio Community,功能全面)

配置环境变量

Mac用户:

# 安装Xcode命令行工具
xcode-select --install
# 或通过Homebrew安装GCC
brew install gcc

Linux用户(Ubuntu/Debian):

sudo apt update
sudo apt install g++ build-essential

2.2 验证安装

g++ --version
clang++ --version   # 如果安装了Clang

2.3 开发工具选择
image.png
VS Code推荐插件:

C/C++ (Microsoft)

CMake Tools

Code Runner

2.4 第一个C++程序
创建第一个C++程序 hello.cpp:

#include <iostream>
#include <string>

int main() {
    // 输出到控制台
    std::cout << "你好,C++世界!" << std::endl;

    // 获取用户输入
    std::string name;
    std::cout << "请输入你的名字:";
    std::cin >> name;

    std::cout << "欢迎你," << name << "!" << std::endl;

    return 0;
}

编译和运行:

# 编译
g++ hello.cpp -o hello

# 运行
./hello     # Linux/Mac
hello.exe   # Windows

三、C++基础语法

3.1 基本语法规则

#include <iostream>

/*
 * 这是一个多行注释
 * 用于说明程序功能
 */

int main() {
    // 单行注释:这是程序入口

    // 语句以分号结束
    std::cout << "Hello, C++!" << std::endl;

    // 代码块使用花括号{}
    if (true) {
        std::cout << "这是代码块" << std::endl;
    }

    return 0;  // 返回0表示程序正常结束
}

3.2 变量与数据类型
C++是静态类型语言,变量必须先声明后使用。

#include <iostream>
#include <string>
#include <climits>  // 整数类型极限
#include <cfloat>   // 浮点类型极限

int main() {
    // ========== 基本数据类型 ==========
    // 整数类型
    int age = 25;                    // 4字节,-2^31 ~ 2^31-1
    short score = 100;               // 2字节
    long bigNum = 100000L;           // 4或8字节
    long long veryBig = 10000000000LL; // 8字节

    // 无符号整数
    unsigned int uAge = 25;          // 非负整数
    unsigned char byte = 255;        // 0~255

    // 浮点类型
    float price = 19.99f;            // 4字节,单精度
    double pi = 3.14159265358979;    // 8字节,双精度
    long double precise = 3.14159265358979323846L; // 扩展精度

    // 字符类型
    char grade = 'A';                // 单字符,单引号
    wchar_t wideChar = L'中';        // 宽字符
    char16_t utf16 = u'中';          // UTF-16
    char32_t utf32 = U'中';          // UTF-32

    // 布尔类型
    bool isStudent = true;           // true 或 false

    // ========== 类型大小 ==========
    std::cout << "int大小:" << sizeof(int) << " 字节" << std::endl;
    std::cout << "double大小:" << sizeof(double) << " 字节" << std::endl;
    std::cout << "bool大小:" << sizeof(bool) << " 字节" << std::endl;

    // ========== 类型极限 ==========
    std::cout << "int最大值:" << INT_MAX << std::endl;
    std::cout << "int最小值:" << INT_MIN << std::endl;
    std::cout << "double精度:" << DBL_DIG << " 位有效数字" << std::endl;

    // ========== auto类型推导 ==========
    auto x = 10;          // 推导为int
    auto y = 3.14;        // 推导为double
    auto z = "hello";     // 推导为const char*

    // ========== decltype类型推导 ==========
    int a = 10;
    decltype(a) b = 20;   // b的类型与a相同

    return 0;
}

3.3 变量命名规范

// 有效标识符
int age;           // 小写字母开头
int student_age;   // 下划线分隔
int studentAge;    // 驼峰命名(常用)
int _internal;     // 下划线开头(通常表示内部变量)

// 常量使用大写字母
const int MAX_SIZE = 100;
constexpr double PI = 3.14159;

// 命名规则:
// 1. 只能包含字母、数字、下划线
// 2. 不能以数字开头
// 3. 不能使用关键字(int、if、return等)
// 4. 区分大小写

3.4 运算符

#include <iostream>

int main() {
    int a = 10, b = 3;

    // ========== 算术运算符 ==========
    std::cout << "a + b = " << a + b << std::endl;   // 13
    std::cout << "a - b = " << a - b << std::endl;   // 7
    std::cout << "a * b = " << a * b << std::endl;   // 30
    std::cout << "a / b = " << a / b << std::endl;   // 3(整数除法)
    std::cout << "a % b = " << a % b << std::endl;   // 1(取余)

    // ========== 自增自减 ==========
    int x = 5;
    std::cout << "x++ = " << x++ << std::endl;  // 先使用后自增:5
    std::cout << "++x = " << ++x << std::endl;  // 先自增后使用:7

    // ========== 关系运算符 ==========
    std::cout << "a > b = " << (a > b) << std::endl;   // 1(真)
    std::cout << "a == b = " << (a == b) << std::endl; // 0(假)

    // ========== 逻辑运算符 ==========
    bool flag1 = true, flag2 = false;
    std::cout << "flag1 && flag2 = " << (flag1 && flag2) << std::endl;  // 与:0
    std::cout << "flag1 || flag2 = " << (flag1 || flag2) << std::endl;  // 或:1
    std::cout << "!flag1 = " << (!flag1) << std::endl;                  // 非:0

    // ========== 位运算符 ==========
    unsigned char m = 0b1100;   // 12
    unsigned char n = 0b1010;   // 10
    std::cout << "m & n = " << (m & n) << std::endl;   // 按位与:8
    std::cout << "m | n = " << (m | n) << std::endl;   // 按位或:14
    std::cout << "m ^ n = " << (m ^ n) << std::endl;   // 按位异或:6
    std::cout << "~m = " << (~m) << std::endl;         // 按位取反
    std::cout << "m << 1 = " << (m << 1) << std::endl; // 左移:24
    std::cout << "m >> 1 = " << (m >> 1) << std::endl; // 右移:6

    // ========== 赋值运算符 ==========
    int c = 10;
    c += 5;   // c = c + 5
    c -= 3;   // c = c - 3
    c *= 2;   // c = c * 2
    c /= 4;   // c = c / 4

    // ========== 三元运算符 ==========
    int max = (a > b) ? a : b;  // 如果a>b取a,否则取b

    // ========== 类型转换 ==========
    // 隐式转换
    double d = 10;           // int转double

    // 显式转换(C风格)
    int i = (int)3.14;

    // C++风格转换
    int j = static_cast<int>(3.14);

    return 0;
}

3.5 输入输出

#include <iostream>
#include <iomanip>  // 格式化输出

int main() {
    // ========== 基本输入输出 ==========
    int age;
    std::string name;

    std::cout << "请输入姓名和年龄:";
    std::cin >> name >> age;

    std::cout << "姓名:" << name << ",年龄:" << age << std::endl;

    // ========== 格式化输出 ==========
    double pi = 3.14159265358979;

    // 设置精度
    std::cout << std::fixed << std::setprecision(2) << pi << std::endl;  // 3.14
    std::cout << std::setprecision(10) << pi << std::endl;               // 3.1415926536

    // 设置宽度
    std::cout << std::setw(10) << "姓名" << std::setw(10) << "年龄" << std::endl;
    std::cout << std::setw(10) << "张三" << std::setw(10) << 25 << std::endl;

    // 十六进制输出
    std::cout << std::hex << 255 << std::endl;  // ff
    std::cout << std::dec << 255 << std::endl;  // 255

    // ========== 读取整行 ==========
    std::string line;
    std::cout << "请输入一行文本:";
    std::cin.ignore();  // 清除缓冲区
    std::getline(std::cin, line);
    std::cout << "你输入了:" << line << std::endl;

    return 0;
}

四、控制流

4.1 条件语句

#include <iostream>

int main() {
    int score = 85;

    // ========== if-else if-else ==========
    if (score >= 90) {
        std::cout << "优秀" << std::endl;
    } else if (score >= 60) {
        std::cout << "及格" << std::endl;
    } else {
        std::cout << "不及格" << std::endl;
    }

    // ========== switch语句 ==========
    int day = 3;
    switch (day) {
        case 1:
            std::cout << "星期一" << std::endl;
            break;
        case 2:
            std::cout << "星期二" << std::endl;
            break;
        case 3:
            std::cout << "星期三" << std::endl;
            break;
        case 4:
        case 5:
            std::cout << "工作日" << std::endl;
            break;
        default:
            std::cout << "周末" << std::endl;
            break;
    }

    // ========== C++17 if初始化语句 ==========
    if (int value = 100; value > 50) {
        std::cout << "value大于50" << std::endl;
    }

    // ========== 嵌套条件 ==========
    int age = 20;
    bool hasTicket = true;

    if (age >= 18) {
        if (hasTicket) {
            std::cout << "可以入场" << std::endl;
        } else {
            std::cout << "请购票" << std::endl;
        }
    } else {
        std::cout << "未成年人禁止入场" << std::endl;
    }

    return 0;
}

4.2 循环语句

#include <iostream>

int main() {
    // ========== for循环 ==========
    std::cout << "for循环:";
    for (int i = 1; i <= 5; i++) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    // ========== 基于范围的for循环(C++11) ==========
    int arr[] = {1, 2, 3, 4, 5};
    std::cout << "范围for循环:";
    for (int x : arr) {
        std::cout << x << " ";
    }
    std::cout << std::endl;

    // 使用引用修改元素
    for (int& x : arr) {
        x *= 2;
    }

    // ========== while循环 ==========
    int count = 0;
    std::cout << "while循环:";
    while (count < 5) {
        std::cout << count << " ";
        count++;
    }
    std::cout << std::endl;

    // ========== do-while循环 ==========
    int n = 0;
    std::cout << "do-while循环:";
    do {
        std::cout << n << " ";
        n++;
    } while (n < 3);
    std::cout << std::endl;

    // ========== 嵌套循环:乘法表 ==========
    std::cout << "乘法表:" << std::endl;
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            std::cout << j << "×" << i << "=" << (i * j) << "\t";
        }
        std::cout << std::endl;
    }

    // ========== break和continue ==========
    std::cout << "break和continue示例:";
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            continue;  // 跳过5
        }
        if (i == 8) {
            break;     // 到达8退出循环
        }
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

来源:
https://app-a87ujc988w01.appmiaoda.com/

相关文章
|
2天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10271 35
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
14天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5950 14
|
22天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
23244 120
|
8天前
|
人工智能 JavaScript API
解放双手!OpenClaw Agent Browser全攻略(阿里云+本地部署+免费API+网页自动化场景落地)
“让AI聊聊天、写代码不难,难的是让它自己打开网页、填表单、查数据”——2026年,无数OpenClaw用户被这个痛点困扰。参考文章直击核心:当AI只能“纸上谈兵”,无法实际操控浏览器,就永远成不了真正的“数字员工”。而Agent Browser技能的出现,彻底打破了这一壁垒——它给OpenClaw装上“上网的手和眼睛”,让AI能像真人一样打开网页、点击按钮、填写表单、提取数据,24小时不间断完成网页自动化任务。
1970 4