C++基础
C++零基础入门超全基础知识点(保姆级详解 适合新手收藏)
大家好!本文给大家整理了最全面、最通俗易懂的C++基础核心知识点,全程无废话、零基础可看懂,搭配实战代码示例、易错点总结,非常适合新手学习、期末复习、博客收藏、入门夯实基础。
本文涵盖:C++简介、环境搭建、基础语法、数据类型、变量常量、运算符、流程控制、数组、函数、指针、引用、结构体、面向对象基础等全套入门核心内容,干货满满,建议收藏!
一、C++ 语言简介
1.1 什么是C++?
C++ 是一门静态类型、编译型、跨平台、面向对象的高级编程语言,在C语言的基础上扩展而来,保留了C语言高效、贴近底层的特性,同时新增了面向对象、泛型编程、STL标准库等强大功能。
1.2 C++ 核心特点
-
兼容性强:完全兼容C语言代码,可直接复用C语言项目
-
执行效率高:编译执行,运行速度快,常用于后端、游戏、嵌入式、算法开发
-
支持多编程范式:支持面向过程、面向对象、泛型编程
-
功能强大:拥有完善的STL标准库,极大提升开发效率
1.3 应用场景
游戏开发、后端服务、嵌入式开发、操作系统、算法竞赛、图像处理、高性能服务器、人工智能底层框架等。
二、C++ 开发环境与第一个程序
2.1 常用开发工具
-
Windows:Dev-C++、CodeBlocks、Visual Studio 2022
-
跨平台:VS Code(搭配MinGW编译器)、CLion
-
Linux/Mac:GCC/G++ 编译器
2.2 第一个C++程序(Hello World)
#include <iostream> // 引入输入输出流头文件
using namespace std; // 使用std标准命名空间
// 主函数:程序入口,有且仅有一个
int main()
{
// 控制台输出语句
cout << "Hello C++!零基础入门!" << endl;
return 0; // 程序正常结束,返回0
}
2.3 代码逐行详解
-
#include <iostream>:预处理指令,引入输入输出库,想要使用cout、cin必须引入 -
using namespace std;:std是标准库命名空间,这句代码可以让我们不用每次都写std::cout -
int main():主函数,程序的唯一入口,程序从这里开始执行 -
cout <<:标准输出,向控制台打印内容 -
endl:换行并刷新缓冲区,等价于换行符\n -
return 0:表示程序正常退出,非0表示程序异常
三、C++ 基础语法规则
3.1 基本规范
-
C++ 语句以分号 ; 结尾,缺一不可
-
代码区分大小写,
cout和COUT完全不同 -
空格、换行不影响程序执行,可自由排版
-
大括号
{}包裹代码块,成对出现
3.2 注释(程序备注,不执行)
// 单行注释:仅当前行生效
/*
多行注释
可以换行
用于批量备注代码
*/
四、数据类型(核心基础)
C++ 是静态类型语言,定义变量必须指定数据类型,不同类型占用内存、存储范围不同。
4.1 基本数据类型
| 数据类型 | 占用字节 | 作用 | 示例 |
|---|---|---|---|
| char | 1 | 存储单个字符/字母 | char a = 'A'; |
| int | 4 | 整型(整数),最常用 | int num = 10; |
| short | 2 | 短整型(小范围整数) | short s = 5; |
| long | 4/8 | 长整型(大范围整数) | long l = 100000; |
| float | 4 | 单精度浮点数(小数) | float f = 3.14f; |
| double | 8 | 双精度浮点数(高精度小数,常用) | double d = 3.14159; |
| bool | 1 | 布尔类型,只有真假 | bool flag = true; |
4.2 类型补充说明
-
bool类型:
true代表真(1),false代表假(0) -
字符类型:字符用单引号包裹,字符串用双引号包裹
-
float后缀:定义float变量建议加
f,否则默认是double类型
4.3 数据类型转换
1、自动转换(隐式转换)
低精度自动向高精度转换,不会丢失数据:int → double、char → int
int a = 10;
double b = a; // int自动转为double,b=10.0
2、强制转换(显式转换)
高精度转低精度,可能丢失数据,语法:(目标类型)变量
double d = 3.99;
int num = (int)d; // 强制转换,直接舍去小数,num=3
五、变量与常量
5.1 变量
变量是可以修改的内存空间,用于存储数据,先定义,后使用。
定义语法
数据类型 变量名 = 初始值;
命名规则
-
只能由字母、数字、下划线组成
-
不能以数字开头
-
不能使用C++关键字(int、cout、if等)
-
区分大小写,建议见名知意
5.2 常量
常量是不可修改的数据,定义后无法重新赋值。
1、const 修饰常量(常用)
const double PI = 3.14159;
// PI = 3.15; 报错,常量不可修改
2、宏常量 #define
#define MAX 100 // 全局常量,预处理阶段替换
六、输入输出(cin / cout)
6.1 标准输出 cout
用于打印数据,支持连续输出多个内容
cout << "姓名:" << "张三" << "年龄:" << 18 << endl;
6.2 标准输入 cin
用于接收用户控制台输入,自动忽略空格、换行
int age;
cout << "请输入年龄:";
cin >> age; // 接收用户输入的整数
七、运算符大全
7.1 算术运算符
用于数值计算:+ - * / % ++ --
-
/:整数相除结果为整数,小数相除结果为小数 -
%:取模(取余数),只能用于整数 -
++自增、--自减:变量自身+1/-1
int a = 5, b = 2;
cout << a / b; // 2(整数除法)
cout << a % b; // 1(余数)
7.2 赋值运算符
= += -= *= /= %=
int a = 10;
a += 5; // 等价于 a = a + 5,a=15
7.3 关系运算符(返回bool值)
> < >= <= == !=
结果:成立为true(1),不成立为false(0),相等判断必须用==,=是赋值
7.4 逻辑运算符
-
&& 逻辑与:全真才真,一假则假 -
||逻辑或:一真则真,全假才假 -
!逻辑非:取反,真变假、假变真
八、流程控制语句
8.1 分支结构(判断)
1、if-else 语句
int score;
cin >> score;
if(score >= 60)
{
cout << "及格" << endl;
}
else
{
cout << "不及格" << endl;
}
2、多分支 if-else if-else
if(score >= 90) cout << "优秀";
else if(score >= 70) cout << "良好";
else if(score >= 60) cout << "及格";
else cout << "不及格";
3、switch 语句(固定值判断)
int day;
cin >> day;
switch(day)
{
case 1: cout << "周一"; break;
case 2: cout << "周二"; break;
default: cout << "输入错误"; break;
}
注意:每个case必须加break,否则会穿透执行
8.2 循环结构
1、for 循环(最常用,已知循环次数)
// 打印1-10
for(int i = 1; i <= 10; i++)
{
cout << i << " ";
}
2、while 循环(未知次数,先判断后执行)
int i = 1;
while(i <= 10)
{
cout << i << " ";
i++;
}
3、do-while 循环(先执行后判断,至少执行一次)
8.3 循环跳转语句
-
break:跳出当前循环/switch,终止循环
-
continue:跳过本次循环,直接执行下一次循环
九、数组
数组是相同数据类型的一组有序集合,连续存储在内存中,下标从0开始。
9.1 一维数组
// 定义+初始化
int arr[5] = {1,2,3,4,5};
// 访问数组元素
cout << arr[0]; // 输出第一个元素1
9.2 二维数组
类似矩阵,常用于表格、坐标数据存储
int arr[2][3] = {{1,2,3},{4,5,6}};
cout << arr[1][0]; // 输出4
十、函数
函数是封装好的代码块,实现代码复用、简化代码结构。
10.1 函数语法
返回值类型 函数名(参数列表)
{
// 函数体
return 返回值;
}
10.2 函数示例
// 定义求和函数
int add(int a, int b)
{
return a + b;
}
int main()
{
int res = add(3,5); // 调用函数
cout << res; // 输出8
return 0;
}
10.3 函数参数与返回值
-
无返回值:使用
void修饰 -
无参数:括号为空即可
-
值传递:形参修改不影响实参
十一、指针(C++核心难点)
指针是存储内存地址的变量,C++高效操作内存的核心。
11.1 指针定义与使用
int a = 10;
int *p = &a; // p存储变量a的地址
cout << p; // 输出a的内存地址
cout << *p; // 解指针,输出a的值10
11.2 核心总结
-
& 取地址符:获取变量内存地址
-
*解指针符:通过地址访问变量值 -
指针变量类型必须和指向的变量类型一致
十二、引用(C++专属特性)
引用是变量的别名,和原变量共用同一块内存,修改引用就是修改原变量,比指针更安全简洁。
12.1 引用语法
int a = 10;
int &b = a; // b是a的别名
b = 20;
cout << a; // a被修改为20
12.2 引用特点
-
引用必须初始化,不能空引用
-
初始化后不能更换引用对象
-
常用于函数参数传递,避免拷贝,提升效率
十三、结构体(自定义数据类型)
结构体可以将多个不同类型的数据封装在一起,用于描述一个事物的完整属性(如学生、员工)。
13.1 结构体定义与使用
// 定义学生结构体
struct Student
{
string name;
int age;
double score;
};
int main()
{
Student s = {"张三", 18, 95.5};
cout << s.name << " " << s.age;
return 0;
}
十四、C++面向对象基础(核心进阶)
C++ 区别于C语言的核心就是面向对象编程(OOP),四大特性:封装、继承、多态、抽象。
14.1 类与对象
类是模板,对象是类的实例,类封装属性(变量)和行为(函数)。
class Person
{
public:
// 属性
string name;
int age;
// 成员函数(行为)
void show()
{
cout << name << " " << age << endl;
}
};
int main()
{
Person p; // 创建对象
p.name = "李四";
p.age = 20;
p.show();
return 0;
}
14.2 访问权限
-
public 公共:类内、类外均可访问
-
private 私有:仅类内可访问(默认权限)
-
protected 保护:类内和子类可访问
十五、新手常见易错点总结
-
语句末尾忘记加分号,编译报错
-
混淆
=赋值 和==判断相等 -
数组下标越界,导致程序崩溃
-
char用双引号、字符串用单引号,语法错误
-
switch-case 忘记写break,出现穿透问题
-
指针未初始化直接使用,造成野指针报错
-
循环中忘记更新变量,导致死循环
十六、总结
本文完整梳理了C++入门全部核心知识点,从基础语法、数据类型、流程控制,到数组、函数、指针、引用、结构体、面向对象基础,覆盖新手入门所有必备内容。
掌握以上内容,就完成了C++零基础入门的全部铺垫,后续可以进阶学习STL标准库、内存管理、继承多态、模板编程等高级知识点。
浙公网安备 33010602011771号