C++基础入门

1. 初始 C++

1.1 第一个 C++ 程序

编写一个 C++ 程序总共分为 4 个步骤:

  • 创建项目
  • 创建文件
  • 编写代码
  • 运行文件

1.1.1 创建项目

Visual Studio 是我们用来编写 C++ 程序的主要工具,我们先将它打开。

选择 空项目,确定 项目名称 和 项目路径。

1.1.2 创建文件

右击源文件,选择 添加->新建项->cpp 文件,给 cpp 文件起个名称,点击添加即可。

1.1.3 编写代码

#include <iostream>
using namespace std;

int main() {
	cout << "hello abc" << endl;

	system("pause");
	return 0;
}

1.1.4 运行程序

CTRL + F5 开始执行程序。

1.2 注释

同 C 语言。

1.3 变量

同 C 语言。

1.4 常量

同 C语言。

1.5 关键字

作用:关键字是 C++ 中预先保留的单词(标识符)

  • 在给变量或者常量起名称的时候,不要用关键字,否则会产生歧义。

C++ 关键字如下:

asmdoifreturntypedef
autodoubleinlineshorttypeid
booldynamic_castintsignedtypename
breakelselongsizeofunion
caseenummutablestaticunsigned
catchexplicitnamespacestatic_castusing
charexportnewstructvirtual
classexternoperatorswitchvoid
constfalseprivatetemplatevolatile
const_castfloatprotectedthiswchar_t
continueforpublicthrowwhile
defaultfriendregistertrue
deletegotoreinterpret_casttry

1.6 标识符命名规则

同 C 语言。

2. 数据类型

2.1 整型

同 C 语言。

2.2 sizeof 关键字

同 C 语言。

2.3 浮点型(实型)

同 C 语言。

C++ 中浮点数特点:

  1. 默认情况下浮点数是 double 类型,在浮点数的末尾加上 f 后 浮点数为 float 类型。
  2. 在 C++ 中输出一个浮点数,默认会显示 6 位有效数字。

2.4 字符型

同 C 语言。

2.5 转义字符

同 C 语言。

2.6 字符串型

作用:用于表示一串字符

两种风格:

  1. C风格字符串: char 变量名[ ] = “字符串值”;
    示例:char str1[] = "hello abc";
  2. C++风格字符串: string 变量名 = “字符串值”;
    示例:string str2= "hello abc";

注意: C++风格的字符串,需要加入头文件 #include <string.h>

2.7 布尔类型 bool

作用:布尔数据类型代表 真 或 假 的值。

bool 类型只有两个值:

  • true — 真(本质是 1)
  • false — 假(本质是 0)
bool flag = true;

cout << sizeof(bool) << endl;//1

bool 类型占 1 个字节大小。

2.8 数据的输入

作用:用于从键盘获取数据

关键字:cin

语法cin >> 变量

示例:

int main() {
	int a = 0;
	cout << "请输入整型变量:" << endl;
	cin >> a;
	cout << a << endl;

	system("pause");
	return 0;
}

bool 类型只要是 非 0 的值 都代表真。

3. 运算符

同 C 语言。

4. 程序设计结构

C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

  • 顺序结构:程序按顺序执行,不发生跳转
  • 选择结构:依据条件是否满足,有选择地执行相应功能
  • 循环结构:依据条件是否满足,循环多次执行某段代码

4.1 选择结构

4.1.1 if 语句

同 C 语言。

4.1.2 三目操作符

同 C 语言。

4.1.3 switch 语句

同 C 语言。

4.2 循环结构

4.2.1 while 循环语句

同 C 语言。

4.2.2 do while 循环语句

同 C 语言。

4.2.3 for 循环语句

同 C 语言。

4.2.4 嵌套循环

同 C 语言。

4.3 跳转语句

4.3.1 break 语句

作用:用于跳出选择语句或者循环语句

break 使用的时机:

  • 出现在 switch 条件语句中,作用是终止 case 并跳出 switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句

示例:

#include <iostream>
using namespace std;

int main() {
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			if (j == 5) {
				break;
			}
			cout << "* ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

4.3.2 continue 语句

作用:在循环语句中,跳出本次循环中剩下尚未执行的语句,继续执行下一次循环。
示例:

#include <iostream>
using namespace std;

int main() {
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			if (j % 2 == 0) {
				continue;
			}
			cout << "* ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}

4.3.3 goto 语句

同 C 语言。

5. 数组

5.1 概述

同 C 语言。

5.2 一维数组

5.2.1 一维数组的定义方式

一维数组定义的三种方式:

  1. 数据类型 数组名[ 数组长度 ];
  2. 数据类型 数组名[ 数组长度 ] = { 值1,值2,…… };
  3. 数据类型 数组名[ ] = { 值1,值2,…… };
1.
int arr1[3];
arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30;

2.
int arr2[5] = { 10, 20, 30 };//不完全定义用 0 补全

3.
int arr3[] = { 10, 20, 30 };
  • 数据名的命名规范与变量名命名规范一致,不要和变量重名
  • 数组中下标是从 0 开始索引

5.2.2 一维数组的数组名

同 C 语言。

数组名是地址,是常量,不可以进行赋值操作。如:arr1 = 100;

5.2.3 冒泡排序

同 C 语言。

5.3 二维数组

二维数组就是在一维数组上,多加一个维度。

5.3.1 二维数组的定义方式

二维数组定义的四种方式:

  1. 数据类型 数组名[ 行数 ][ 列数 ];
  2. 数据类型 数组名[ 行数 ][ 列数 ] = { { 数据1, 数据2 }, { 数据3, 数据4 } };
  3. 数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4 };
  4. 数据类型 数组名[ ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4 };

建议:以上 4 种定义方式,利用第二种更加直观,提高代码的可读性。

1.
int arr1[2][2];
arr1[0][0] = 10;
arr1[0][1] = 20;
arr1[1][0] = 30;
arr1[1][1] = 40;

2.
int arr2[2][2] = { {10, 20}, {30, 40} };

3.
int arr3[2][2] = { 10, 20, 30, 40 };

4.
int arr4[][2] = { 10, 20, 30, 40 };

for (int i = 0; i < 2; i++) {//外层循环打印行数
	for (int j = 0; j < 2; j++) {//内层循环打印列数
		cout << arr[i][j] << " ";
	}
	cout << endl;
}

在定义二维数组时,如果初始化了数据,可以省略行数。但是列数不能省略。

5.3.2 二维数组的数组名

同 C 语言。

5.3.3 二维数组应用案例

考试成绩统计:已知三名同学在一次考试中的三门成绩,请分别输出三名同学的总成绩。

#include <iostream>

using namespace std;

int main() {
	//创建二维数据,统计考试成绩
	int scores[3][3] = { {100,100,100},{90,50,100},{60,70,80} };

	for (int i = 0; i < 3; i++) {
		int sum = 0;//统计每个同学的总成绩
		for (int j = 0; j < 3; j++) {
			sum += scores[i][j];
		}
		cout << "第" << i + 1 << "个人的总分为:" << sum << endl;
	}

	system("pause");

	return 0;
}

6. 函数

6.1 函数的概述

同 C 语言。

6.2 函数的定义

同 C 语言。

6.3 函数的调用

同 C 语言。

6.3.1 值传递

同 C 语言

6.4 函数的常见样式

常见的函数样式有 4 种:

  1. 无参无返
  2. 有参无返
  3. 无参有返
  4. 有参有返

无类型不可以创建变量(void a = 10;?),原因无法分配内存。

6.5 函数的声明

作用:告诉编译器函数名称(函数的存在)及如何调用函数。函数的实际主体可以单独定义。(同 C 语言)

  • 函数的声明可以多次,但是函数的定义只能有一次
//声明可以多次
int max(int a, int b);
int max(int a, int b);
//定义只有一次
int max(int a, int b) {
	return a > b ? a : b;
}

6.6 函数的分文件编写

作用:让代码结构更加清晰

函数的分文件编写一般有 4 个步骤:

  1. 创建后缀名为 .h 的头文件
  2. 创建后缀名为 .cpp 的源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义

示例:

//max.h 文件
#include <iostream>
using namespace std;

//实现求两个数字最大值的函数声明
int max(int a, int b);
//max.cpp 文件
#include "max.h"

//实现求两个数字最大值的函数定义
void max(int a, int b) {
	return a > b ? a : b;
}

最终,在主函数的源文件头部 #include <max.h>

7. 指针

7.1 指针的基本概念

同 C 语言。

7. 2 指针变量的定义和使用

同 C 语言。

7.3 指针所占的内存空间

同 C 语言。

7.4 空指针和野指针

同 C 语言。

7.5 const 修饰指针

同 C 语言。

7.6 指针和数组

同 C 语言。

7.7 指针和函数

作用:利用指针作为函数参数,可以修改实参的值。(传址调用原理)

8. 结构体

8.1 结构体基本概念

同 C 语言。

8.2 结构体定义和使用

同 C 语言。

C++ 结构体特点:

  1. 定义结构体时的关键字是 struct,不可省略
  2. 创建结构体变量时,关键字 struct 可以省略

8.3 结构体数组

作用:将自定义的结构体放入到数组中方便维护
语法struct 结构体名 数组名[元素个数] = {{}, {}, ..., {}};
示例

//结构体定义
struct student {
	//成员列表
	string name;//姓名
	int age;	//年龄
	int score;	//分数
}
//创建结构体数组
struct student arr[3] = 
{
	{ "张三", 18, 80},
	{ "李四", 20, 60},
	{ "王五", 19, 100}
};
//给结构体数组中元素赋值
arr[2].name = "赵六";
arr[2].age= 21;
arr[2].score= 90;
//遍历结构体数组
for (int i = 0; i < 3; i++) {
	cout << arr[i].name << " " << arr[i].age << " " << arr[i].score << endl;

8.4 结构体指针

同 C 语言。

8.5 结构体嵌套

同 C 语言。

8.6 结构体做函数参数

同 C 语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值