【C++】新手入门课程

目录

一.Visual Studio下载配置环境

1.1下载地址

1.2安装visual studio

二.创建新项目

2.1创建项目工程

2.2创建新项目

三.【第一课】书写Hello Word

四、变量和常量

4.1变量的创建

4.2常量的创建

五.数据类型

5.1sizeof的使用

5.2浮点型(实数)

5.3科学计数法

5.4字符型

5.4.1字符型变量

5.4.2显示字符ASCII码 

5.5字符串型

六.数据的输入

七.运算符

7.1前置和后置递增递减

7.2赋值运算符

7.3比较运算符

7.4逻辑运算符

八.程序流程结构

8.1选择结构

8.1.1 if语句

8.1.2三目运算符

8.1.3 switch语句

8.2循环结构

8.2.1 while循环语句

8.2.2 do while循环语句

8.2.3 for循环语句

九.数组操作

9.1创建数组

9.2数组内存地址

十.指针

10.1指针的定义和使用

10.2空指针

10.3野指针

10.4常量指针

10.5指针常量

10.6常量既修饰指针又修饰常量

10.7指针和数组

10.8指针和函数

10.8.1地址传递至函数

十一.结构体

11.1结构体的创建和会用

11.2结构体指针

11.3结构体嵌套


一.Visual Studio下载配置环境

1.1下载地址

官网地址:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器

visual studio是免费的,因此官网下载即可,同时支持中文界面

社区版:可供非企业或开源开发者们免费访问

专业版:面向任何规模团队的可缩放、端到端解决方案

1.2安装visual studio

下载完之后启动安装程序,下载支持包

一定要选择安装这个,不然无法使用C++,接着点击右下角修改即可安装

二.创建新项目

2.1创建项目工程

2.2创建新项目

找到左侧解决方案资源管理器→源文件→右键添加→新建项

选择c++文件(.cpp)→更改名称→添加

空白文件已经创建好了,接下来可以写代码了

三.【第一课】书写Hello Word

C++的书写语法和C语言是有差异的,当我第一次看到该书写规则时还有些不习惯。

1.首先写框架,今后所写的程序基本上都包含此框架

2.写入hello word

3.运行效果

四、变量和常量

4.1变量的创建

作用:方便管理和存储数据至内存

变量创建语法:数据类型  变量名  =  变量初值,例:int A = 100

示例:

4.2常量的创建

作用:记录程序中不可更改的数据

两种方式:

1.#define 宏常量:#define 常量名 常量值

表示一个常量,必须定义在开头

2.const修饰的变量:const 数据类型 常量名 = 常量值

表示不可修改的变量

示例1:

示例2:

五.数据类型

5.1sizeof的使用

作用:用于判断数据类型或变量占用的内存大小

示例:

5.2浮点型(实数)

作用:用于表示小数

分为两种:

1.单精度float

2.双精度double

单精度定义:float f1=3.14f

(如果不加f,则默认双精度浮点数)

双精度定义:float f1=3.14 或 double f1=3.14

5.3科学计数法

示例:

3e3=3000

3e-3=0.003

5.4字符型

5.4.1字符型变量

作用:用于显示存储字符,且为单个字符

语法:char C = 'a'

·字符型变量占用1字节

·并不是将字符本身存储于内存中,而是将对应的ASCII码放入内存中

示例:

5.4.2显示字符ASCII码 

若要输出字符串ASCII码,则在变量前加上(int),强制转换成整数型

示例:

5.5字符串型

作用:用于显示存储字符串,且为单个或多个字符

两种写法:

1.C写法:

语法:char C[] = "字符串值"

2.C++写法

语法:string C = "字符串值"

用之前需包含头文件:

[提示]字符串值为双引号

5.6布尔类型bool

作用:输出真(1)或假(0)

示例:

六.数据的输入

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

语法:cin>>变量

示例:

→回车→

七.运算符

7.1前置和后置递增递减

加减运算符递增有两类:

前置递增:++a、后置递增:a++

实例:

运算过程为:a=(a+1)*10

运算过程为:a=a*10,当cout这一行代码执行完后,再执行a=a+1

7.2赋值运算符

赋值运算符共有:=、+=、-=、*=、/=、%=

方法:a=1、a=a+1、a=a-1、a=a*1、a=a/1、a=a%1

7.3比较运算符

作用:判断两个数是否相等、不等、大于、小于等,并返回真或假

示例:

7.4逻辑运算符

作用:判断表达式的值,返回真或假

[提示]在C++中,除0之外的值都为真

八.程序流程结构

三种基本结构:顺序结构、选择结构、循环结构

顺序结构:程序按顺序执行,不发生跳转

选择结构:程序按照满足条件,选择相应代码执行

循环结构:程序按照满足条件,多次执行某段代码

8.1选择结构

8.1.1 if语句

作用:执行满足条件的语句

语法:if(条件A)

{条件A满足,则执行代码A}

else if(条件B)

{条件B满足,则执行代码B}

else

{条件A和B都不满足,则执行代码C}

8.1.2三目运算符

作用:通过三目运算符实现语句判断

语法:表达式1?表达式2:表达式3

解释:如果表达式1为真,则执行表达式2,并返回表达式2的结果;如果表达式1为假,则执行表达式3,并返回表达式3的结果

示例:

同时还可以为a或b变量赋值:

第二行a>b为假,所以返回b,令b=100,结果为:

8.1.3 switch语句

作用:执行多条件分支语句

语法:

switch(表达式)

{

        case 结果1:执行语句1;break;

        case 结果2:执行语句2;break;

        ...

        default:执行语句n;break;

}

示例:

8.2循环结构

8.2.1 while循环语句

作用:满足循环条件,执行循环语句

语法:while(循环条件){循环执行代码}

示例:

8.2.2 do while循环语句

作用:与while不同之处在于,判断循环条件之前首先执行一次do中的代码

语法:

do{循环执行代码}

while(循环条件)

8.2.3 for循环语句

作用:满足循环条件,执行循环语句

语法:for(起始表达式;条件表达式;末尾循环体){循环语句}

8.3跳转语句goto

作用:跳过剩下的代码执行,直接跳转到标记处执行代码

语法:goto flag

示例:

[注意]应避免使用goto,容易造成代码混乱,不易阅读

九.数组操作

9.1创建数组

一维数组:

创建数组三种方式:

1.数组类型 数组名[n]

2.数组类型 数组名[n]={1,2,3,...,n-2,n-1,n}

3.数组类型 数组名[]={1,2,3,...,n-2,n-1,n}

示例:

二维数组:

创建方式和一维数组类似,m是行,n是列

数组类型 数组名[m][n]

示例:

9.2数组内存地址

直接在数组名前面加上&,代表指针

示例:

查看数组中第2个元素的内存地址:

十.指针

10.1指针的定义和使用

创建指针:

*p:表示存放指针

&a[0]:表示读取a[0]的地址

p指示的是a[0]的地址,a[1]地址=a[0]地址+4

使用指针:

作用:修改或引用指针指向的内存数据

示例:

[注意]如果a[8]变量不为数组,是单个值,则p[0]应该为*p

示例:

10.2空指针

作用:用于初始化指针变量

示例:

10.3野指针

作用:指针变量指向非法内存空间,程序中应尽量避免胡乱访问,否则会出错

示例:

这是胡乱定义的一个内存地址

10.4常量指针

作用:指针指向的地址可以改,但指向的内存里面的值不可以修改赋值

语法:float a[8]={-1,-1.1,1.5,4,0,5,7,3};

          const float *p=&a[0];

示例:

10.5指针常量

作用:指针指向的地址不可以改,但指向的内存里面的值可以修改赋值

语法:float a[8]={-1,-1.1,1.5,4,0,5,7,3};

           float * const p=&a[0];

示例:

10.6常量既修饰指针又修饰常量

作用:指针指向的地址不可以改,且指向的内存里面的值也不可以修改赋值

语法:float a[8]={-1,-1.1,1.5,4,0,5,7,3};

           const  float * const p=&a[0];

示例:

10.7指针和数组

作用:利用指针访问数组元素

示例:

访问a数组中第一个元素:

访问a数组中第二个元素:

10.8指针和函数

10.8.1地址传递至函数

作用:在子函数中可对传入的地址中的实参进行修改

单个值:

数组:

十一.结构体

11.1结构体的创建和会用

作用:用户自定义数据结构类型

示例:

自定义一个结构体:

创建结构体变量:

给结构体赋值:

打印结构体某个元素:

11.2结构体指针

作用:通过指针访问结构体中的属性

语法:p->name

示例:

11.3结构体嵌套

作用:在某一个结构体中嵌套另一个结构体

示例:

十二.内存管理

12.1 new创建内存空间

作用:开辟一块内存空间,由程序员自行操作、施放,不会被程序自动施放

语法:int *p=new int (10)

示例:

这个就是开辟的一块内存,初始值为5

这就是开辟的一块内存数组,初始值分别是1,2,3

12.2 delete删除内存空间

作用:释放内存,由new创建的内存尽量使用delete释放,否则会造成内存泄漏

语法:释放非数组:delete p

           释放数组:delete[] p  

12.3内存引用

作用:给一块内存取别名

语法:数据类型 &别名=原名

说明:引用必须初始化,如:数据类型 &b,这是错误的引用。一旦初始化后,不可以更改引用,如:首先引用 数据类型 &b=a,再引用 数据类型 &b=c,这是错误的。

12.4引用做函数参数

作用:函数传参时,可以利用引用计数让形参修饰实参

优点:简化指针修改实参

示例:

                图12.4.1

                图12.4.2

                图12.4.3

解释:图12.4.2中,swap(a,b)其中的a和b是实参,当传入swap函数时,如图12.4.1,由于形参为int &a和int &b,相当于引用了实参a和b的内存,指向实参a和b的内存地址,所以当子函数swap()中对a和b修改时,会直接对实参a和b内存中的值进行修改

十三.类和类模板

作用:模板可以使得程序员编写独立于数据类型的通用代码。模板使得数据类型成为一个参数,使得通用代码可以用于不同的数据类型。使用模板,程序员可以编写具有通用性的函数、类和数据结构来处理不同类型的数据。

13.1类模板创建

作用:建立一个通用类,类中的成员、数据类型可以不具体制定,用一个虚拟类型来表示

语法:template<class typename T>

示例:

在不使用this关键字的情况下,直接写出m_Name = name; 也是可以的。但是在类中,通常会存在与成员变量同名的局部变量或参数变量,这样会导致编译器无法区分使用局部变量还是成员变量,造成二义性。因此,使用this可以明确地指示使用的是该对象的成员变量,防止二义性的发生,提高了代码的可读性和可维护性

其中,<string, int>是由于类模板无法自动推导类型,因此需要<string, int>传入,这样使得数据类型也可视为变量

13.2模板对象作函数参数

作用:将模板对象作为某个函数的参数传入

指定传入类型(常用):

示例:

可以看到子函数ls1的参数为person<string, int> &p

参数模板化:

将子函数ls1中的参数类型(person<string, int> &p)写成(person<T1,T2> &p),即可参数模板化

整个类模板化:

 将子函数ls1中的参数类型(person<string, int> &p)写成(T &p),即可参数模板化

13.3类模板与继承

示例:

13.4成员函数的类外实现

示例:

13.5类模板与友元函数

全局函数类内实现:

示例:

全局函数类外实现:

开头声明

十四.容器vector

14.1 vector中存放类

作用:将类存入vector中

示例:

14.2 vector嵌套vector

示例:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我也想搞机器学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值