C++第一课

第 1 课:C++ 程序到底在干什么?

先看刚才这段代码:

复制代码
#include <iostream>

int main()
{
    int a = 3;
    int b = 5;

    int c = a + b;

    std::cout << c << std::endl;

    return 0;
}

你暂时不用背它。

这一课我们只搞清楚三件事:

程序从哪里开始、变量是什么、怎么把结果显示出来。


1. 先用最直觉的方式理解程序

你可以把程序想象成:

你给电脑写的一张"操作说明书"。

比如:

复制代码
准备一个盒子 a,里面放 3
准备一个盒子 b,里面放 5
把 a 和 b 相加
结果放进盒子 c
把 c 里面的东西显示出来

电脑按照顺序执行。

因此:

复制代码
int a = 3;
int b = 5;

int c = a + b;

相当于:

复制代码
a = 3
b = 5

c = 3 + 5
c = 8

最后:

复制代码
std::cout << c << std::endl;

就是:

把 c 的值显示在屏幕上。

所以程序最终输出:

复制代码
8

2. 你刚才说的第二题

你说:

int a = 3; 是声明变量

这个方向是对的,但我们以后要说得更准确一点。

复制代码
int a = 3;

实际上同时做了两件事:

复制代码
声明变量 + 给变量初始值

拆开看:

复制代码
int   a   =   3   ;

每个东西都有含义。

int

表示这个变量的数据类型是:

整数 integer

比如:

复制代码
3
10
-5
1000

都是整数。

所以:

复制代码
int a;

意思就是:

创建一个用来存放整数的变量,名字叫 a。

你可以想象成电脑内存里出现了一个盒子:

复制代码
┌─────────┐
│    ?    │
└─────────┘
    a

这个盒子叫:

复制代码
a

而且规定:

复制代码
这个盒子只能用来存整数

3. = 3 是什么意思?

复制代码
int a = 3;

可以想象为:

复制代码
内存:

       a
   ┌───────┐
   │   3   │
   └───────┘

所以:

复制代码
int a = 3;

可以理解成:

创建一个整数变量 a,并把初始值设成 3。

这里有一个以后非常重要的概念。

在 C++ 中:

复制代码
=

通常不是数学里的"等于"。

它更像:

把右边的值放进左边。

例如:

复制代码
a = 10;

不是在说

复制代码
a 等于 10

更准确地说是:

复制代码
把 10 放进变量 a

假设之前:

复制代码
a
┌─────┐
│  3  │
└─────┘

执行:

复制代码
a = 10;

以后就变成:

复制代码
a
┌─────┐
│ 10  │
└─────┘

原来的 3 被覆盖了。


4. 为什么每句话后面都有 ;

例如:

复制代码
复制代码
int a = 3;

最后这个:

复制代码
;

叫:

分号 semicolon

你暂时可以把它理解为:

"这一条命令写完了。"

有点像中文里的句号。

例如:

复制代码
复制代码
int a = 3;
int b = 5;
a = 10;

相当于三句话:

复制代码
复制代码
创建 a,值为 3。
创建 b,值为 5。
把 10 放进 a。

所以初学时有一个非常常见的报错:

复制代码
复制代码
int a = 3

忘记写:

复制代码
复制代码
;

编译器就可能报错。


5. int c = a + b;

现在你应该能拆一点了。

复制代码
复制代码
int c = a + b;

拆成:

复制代码
复制代码
int
c
=
a
+
b
;

含义:

复制代码
复制代码
int
↓
我要创建一个整数变量

c
↓
变量名字叫 c

=
↓
把右边的结果存进 c

a + b
↓
计算 a 加 b

因为:

复制代码
复制代码
a = 3
b = 5

所以:

复制代码
复制代码
a + b

就是:

复制代码
复制代码
3 + 5

得到:

复制代码
复制代码
8

然后放进 c:

复制代码
复制代码
       c
   ┌───────┐
   │   8   │
   └───────┘

6. 最陌生的这一句

你刚才说不知道:

复制代码
复制代码
std::cout << c << std::endl;

非常正常。

现在先不深入解释 std 的底层原理,只先知道它怎么读。

我们从中间开始。

cout

复制代码
复制代码
cout

大致可以理解为:

console output

也就是:

向屏幕输出东西。

例如:

复制代码
复制代码
std::cout << 123;

屏幕显示:

复制代码
复制代码
123

7. << 是什么意思?

这里非常容易让初学者迷惑。

复制代码
复制代码
std::cout << c;

你暂时可以把:

复制代码
复制代码
<<

想象成:

复制代码
复制代码
送过去

所以:

复制代码
复制代码
std::cout << c;

可以画成:

复制代码
复制代码
c 的内容
   │
   │
   ▼
cout
   │
   ▼
屏幕

如果:

复制代码
复制代码
c = 8;

那么:

复制代码
复制代码
std::cout << c;

就是:

复制代码
复制代码
把 8 送到屏幕上

于是显示:

复制代码
复制代码
8

8. 那 std:: 又是什么?

现在只需要一个非常简单的理解。

复制代码
复制代码
std::cout

可以理解成:

在 C++ 标准库 std 里面,找到一个叫 cout 的东西。

可以类比成文件夹。

假设:

复制代码
复制代码
std 文件夹
│
├── cout
├── endl
├── string
└── vector

那么:

复制代码
复制代码
std::cout

就是:

复制代码
复制代码
std 里面的 cout

而:

复制代码
复制代码
::

这个符号可以暂时理解成:

"里面的"

所以:

复制代码
复制代码
std::cout

读成:

复制代码
复制代码
std 里面的 cout

以后学到:

复制代码
复制代码
class
namespace

时,我们会正式解释 ::。

现在不用背理论。


9. endl 是什么?

复制代码
复制代码
std::endl

作用可以先简单理解为:

换行

比如:

复制代码
复制代码
std::cout << 8 << std::endl;
std::cout << 10 << std::endl;

屏幕是:

复制代码
复制代码
8
10

而不是:

复制代码
复制代码
810

所以:

复制代码
复制代码
std::cout << c << std::endl;

可以暂时翻译成:

复制代码
复制代码
把 c 的值输出到屏幕
然后换行

10. 整句话翻译

因此:

复制代码
复制代码
std::cout << c << std::endl;

我们以后看到它,可以先在脑子里翻译成:

复制代码
复制代码
把 c 输出到屏幕,然后换行。

11. 程序从哪里开始?

现在再看:

复制代码
复制代码
int main()
{

这里暂时只记住一个规则:

普通 C++ 程序一般从 main() 开始执行。

你可以把:

复制代码
复制代码
main

理解成:

程序的大门。

电脑运行程序时,大致就是:

复制代码
复制代码
启动程序
   ↓
找到 main()
   ↓
从 main 里面第一句开始
   ↓
一行一行执行
   ↓
结束

因此:

复制代码
复制代码
int main()
{
    int a = 3;
    int b = 5;
    int c = a + b;

    std::cout << c << std::endl;

    return 0;
}

执行顺序:

复制代码
复制代码
进入 main
    ↓
a = 3
    ↓
b = 5
    ↓
c = a + b = 8
    ↓
输出 c
    ↓
屏幕出现 8
    ↓
程序结束

12. 先不要管的东西

你现在可能还不知道:

复制代码
复制代码
#include <iostream>

以及:

复制代码
复制代码
return 0;

这两个我们下一小节再讲。

现在不要一次塞太多概念。

这一节你只需要真正理解:

复制代码
复制代码
int a = 3;

和:

复制代码
复制代码
std::cout << a << std::endl;
相关推荐
朔北之忘 Clancy15 小时前
2025 CSP-J 第二轮真题解析
c++·青少年编程·题解·noip·csp·信奥赛·noi
longlongzihan15 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
落魄实习生16 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
yolo_guo16 小时前
调试mysql延迟与libevent回调实际发送回复时机问题
c++·mysql·libevent
封印师请假去地球钓鱼16 小时前
边解边变的问题:从“决策依赖“一词出发
人工智能·算法
茉莉玫瑰花茶16 小时前
GO [ 方法 ]
开发语言·后端·golang
今晚打老虎16 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
狗凯之家源码网17 小时前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php
不会就选b18 小时前
算法日常・每日刷题--<贪心>26
数据结构·算法
by2099918 小时前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习