• 微信号
  • 微信号
您当前的位置:首页 > 学海无涯 > 茑语花香>C++ 入门讲解

C++ 入门讲解

孤峰 孤峰家 2023-09-21 68人阅读

C++ 入门讲解~写了几篇文章,都是讲 C++ 的代码的,结果还没讲过入门的...(废)

那么今天就来讲解一下 C++ 的入门吧

认识 C++

什么?你不知道 C++ 吗?好吧,C++是一种应用广泛的计算机编程语言,同时,它是 C 语言的继承,它于 1979 年开始改良 C 语言为 C with Classes,在 1983 年正式命名为 C++。

C++ 是一种编译型语言,不同于 JavaScript,Python 一样是解释型语言,但 C,Pascal 和C++ 一样,也是编译型语言。

编译型语言:计算机先将源代码转换成机器语言,生成一个后缀名为.exe (Windows系统)的应用程序。(编译执行)

解释型语言:计算机会直接对源代码进行逐句编译,找到了一句话就编译一句话并执行它。(逐句执行)

而不同的语言,都有他们各自的优缺点:

编译型语言:在编译的过程中,需要耗费时间去将源代码 " 翻译 " 成机器语言,等待的时间让人想砸机子,特别是在做大工程的时候,不过小程序还是编译的很快的。但是它也有好处的,在执行中的效率上,编译型语言可以直接从翻译好了的机器语言直接执行。

解释型语言:在开始执行后,它将要逐句翻译并执行,在执行中就相对比较吃力了。而它同样也有好处,就是它不用编译,直接打开窗口执行,省去了砸机子编译的步骤。

读了这段话,可能会没听懂,但是这个你绝对听得懂。

比如小明(又是他),他要演讲一篇 English 的论文(小明是讲 Chinese 的),那么他有两种方法去读。

方法一(先翻译):小明先将 English 论文翻译成 Chinese,然后他花了一个晚上翻译好了,第二天他直接流利的读了出来。

方法二(逐句翻译):上面是小明的幻想,小明的演讲马上就要开始了,小明只好硬着头皮逐句翻译,读到一句就翻译一下,这就要看翻译者 (翻译器) 的性能了,比方说小明的 English 很差,那么......如果说小明读 English 跟读 Chinese 一样流利的话,他要翻译一个晚上干啥呢?

相信你已经懂了什么是 C++ 了,还懂了一堆跟 C++ 没啥关系的东西,现在开始进入正题了!

C++ 的程序设计

C++ 语言的设计需要有 C++ 编译器,C++ 源代码编辑器(这个东西你用文本文档 txt 编辑的话......也不是不行,但是很麻烦,呵呵)。C++ 的编译器分为很多种版本,常见的有 C++98,C++11,C++14,C++17。

选用适合自己的版本进行下载。

C++ 下载与安装

这里是使用 Windows 系统的

在搜索引擎里搜索 Dev C++,找到 Dev-C++ - Download 并打开它。(另外就是在 360 安全卫士中的软件管家搜索 Bloodshed Dev-Cpp 就可以找到了,直接安装的)

下载 C++ 后会得到一个安装包,双击它后,就会开始下载。

下载完成后就会提示你选择语言。诶,但是里面就是没有 "简体中文" 这个选项,这样的话就选择 English 直接点击 OK,进行下一步。

然后他就会弹出一篇文章许可证,谁会看呢?直接点击 "I Agree" 。

随后它会让你选择组件,这个不用管,直接点击 "Next >" 。

较后它会让你选择安装路径,选择好了之后直接点击 "Install" 进行下载。(随后就是一顿操作)

下载完成后点击 Finish,直接打开 Dev-C++。

在新弹出的窗口里,你就可以选择语言了,看到了那个 "简体中文/Chinese" 了吗?不要犹豫,直接点击它。

随后的主题是以个人喜好为主的。

较后它就会直接打开 Dev-C++ 了。

为了干这个,我还把 Dev-C++ 删了...

C++ 基本操作

按住 Ctrl + 鼠标滚轮 可以调节显示大小。

按下 Ctrl + N 可以新建一个源代码。

按下 Ctrl + S 可以保存源代码。

点击这里也是可以新建源代码的

新建了源代码(我的背景不一样是因为我改了,只有外观上的区别)

输入几行代码

保存源代码

保存文件(.cpp)

保存文件时的 .cpp 文件就是源代码文件,命名完后可以看到名字已经不是未命名了

保存好了的源文件

随后,就是要让编译器翻译这段代码了

在翻译之前,我们先来看看我们要怎么操控它

依次为 编译 运行 编译运行 全部重新编译

编译:让编译器翻译源文件。

运行:让编译器运行翻译后的文件(.exe)。

编译并运行:很显然,先编译再运行。

在这里,我们必须先编译完才可以运行。(因为 C++ 不是解释型语言......)

编译完成后,下方会出现编译后的结果

编译后

然后再点击运行,就会出现一个黑框,里面写着 Hello December 这句话

除了输出 Hello December , 其他都是程序结束时做的

如果你的编译器列出了一条红色的线,说明你的源代码写的有问题。

cout 写成了 cuot , 编译器看不懂

还有一种情况,它没有红线,但是却报错了,这样的原因可能是因为编译器不允许你运行两个同样的代码。

想要打开 C++ 的源文件,就要找到后缀名为 (.cpp) 的文件双击打开,而不是双击打开后缀名为 (.exe) 的文件,那个是程序的执行窗口。

而想要去打代码,就要明白代码是这样执行的。

代码的执行

代码的执行是一句一句执行的,比如这段代码

#include<iostream>

using namespace std;

int **in(){

cout<<"Hello December"<<endl;

return 0;

}

它将会一句一句的翻译,而 C++ 编译器识别一句话是以分号 ( ; ),花括号 (正反,{,}),括号 (正反,(,) ) 或是一句 # 号开头的代码的末尾。

首先是

#include<iostream>

using namespace std;

这个直接带过。别管它。。。

int **in()

这句话声明了我要定义一个函数,函数的名字叫做 **in,也就是主函数,随后,计算机就会照你说的去做。然后是

int **in(){

}
cout<<"Hello December"<<endl;

这句话说明我要输出一些东西 ( cout ),输出一个字符串 ( "..." ),在加上一个回车 ( endl ),然后是分号,表示这一句结束了。

return 0;

表示在 **in 函数内返回一个值,必须是 int 类型的 (因为 **in 函数是 int 类型的),返回什么,返回 0 。

较后是花括号,表示我对这个函数的语句声明完成了。

当你到了这一步时,就可以进行写 源 代 码 这一步了。

C++ 源代码

本来想下一次再讲的,但是还是塞在了这一次。所以还不给作者一个三连?

一开始学习 C++ 一般就是先让你背下来这段话。

#include<iostream>

using namespace std;

int **in(){

}

然后在花括号里面写代码,我一开始学就觉得在 **in() 外面就是禁区(指不能改变的地方),其实开头这一部分可以分成几个地方。

#include<iostream>

这个家伙的名字叫 头文件 (Header Files),头文件内包含各种函数和其他各种各样的东西。我们最需要的就是它里面的 函数 了。

程序就像要干一件事情,有着很多的步骤,你不可能把每一个步骤都记得清清楚楚,所以就需要想书本一样的头文件来方便得告诉你怎么做。

这个头文件是十分常见的,后面的程序除非你不用它里面的函数,就要用到它。

using namespace std;

这个东西在写一般的代码时是不用变的。所以就不解释了。

int **in()

int 是一种数据类型,而 **in 在这里叫做主函数,一个代码开始执行时,总会从这里出发,这个也是不用变的,因为一个代码中必须要有一个 **in 函数。

然后在加一对花括号,表示我要对这个函数干的事情进行一个声明

int **in()

{

//干些啥好呢(⊙▽⊙)

}
cout<<"yyds"<<endl;

就表示要在运行框里输出一句 yyds

cout<<"awsl"<<endl;

就表示要在运行框里输出一句 awsl

所以,cout 的作用就是输出,它是一个很常用的输出。

那么一个程序只输出,未免就太单调了,我们还要输入

int a;//声明,定义一个 int 类型的变量,名字叫做a

cin>>a;//输入变量a

int 不仅可以用来声明函数,还可以用来声明变量,在其后方加上一个空格,在加上一个变量的名字,你就创建了一个新的变量,它可以存储一个数字 (因为它是 int,数字的大小在 -2147483648~2147483647 之间),随后我们就可以对这个变量做出改变,比如从输入中获取数字,然后添加到变量,又或者你想知道它是多少,并输出它。

int a;//定义a

cin>>a;//输入a

cout<<a<<endl;//输出a

所以,cin 的作用就是输入,从运行框里获取数字并将它赋值给 a 这个变量。

但是这样子还是很无聊,只能定义,输入,输出。

所以,我们还有运算符。

我们熟知的运算符有这几种 加 ( + ),减 ( - ),乘 ( * ),除 ( / ) ,取余运算,也叫模 ( % ) 。

另外,还有赋值运算符 ( = ),表示把后者赋值给前者,前者只能是变量,后者就可以是数字或变量,下面是它们的用法

int a,b,c,d,e,sum;//定义多个变量时,可以用空格分隔

cin>>a>>b>>c>>d>>e;//输入多个变量时,可以使用多个输入流(>>)隔开,表示一同输入

sum=0;//将0赋值给sum

sum=a+b;//把a+b的值赋值给sum

cout<<sum<<endl;

sum=b-c;//把b-c的值赋值给sum

cout<<sum<<endl;

sum=c*d;//把c*d的值赋值给sum

cout<<sum<<endl;

sum=d/e;//把d/a的值赋值给sum(商向下取整)

cout<<sum<<endl;

sum=e/a;//把e/a的值赋值给sum

cout<<"Answer is:"<<sum<<endl;//输出多个东西时,可以使用多个输出流(<<)隔开,表示一同输出

不仅如此,还有 自增 (++),自减 (--),例如

sum=sum+1;//把sum+1的值赋值给sum

sum=sum-1;//把sum-1的值赋值给sum

sum++;//等于sum=sum+1;

sum--;//等于sum=sum-1;

在赋值号的两边,总是会先计算右侧的得数,在将得数赋值给左侧的变量,所以不会造成 sum 表示的数字出错。

有人说这样太占空间了,特别是名字很长的变量(这不是我吗)

int sum;

cin>>sum;

sum=sum+32;

那么就可以这样子

int sum;

cin>>sum;

sum+=32;//等于sum=sum+32;

不仅仅局限于加号,还可以是更多的

int sum;

sum-=32;//表示sum=sum-32;

sum*=32;//表示sum=sum*32;

sum/=32;//表示sum=sum/32;

sum%=32;//表示sum=sum%32;

还有一点,就是当你要把很多个变量统一赋值为一个数时,可以这样写。

int a,b,c,d,e,x;

cin>>x;

a=b=c=d=e=x;//同等于e=x;d=e;c=d;b=c;a=b;

这样赋值就方便多了

它的功能十分强大,已经足够让我们去进行计算一道数学题了(偷懒的方法),当然只是计算题

要注意的是,C++ 编译器同样会遵守先乘除,后加减的法则,所以,又引出了一个难题

int a,b,c,d,sum_1,sum_2;

cin>>a>>b>>c>>d;

sum_1=a+b;

sum_2=c-d;

sum=sum_1/sum_2;

cout<<sum<<endl;

这是要求一道奇怪的题,可是这道题有着运算的先后顺序,这直接要多设两个变量,实在是太浪费空间了。

所以,我们就要请括号来参与计算了,它的使用方式和做计算题是一样的,只不过它不用啥中括号,因为 C++ 编译器会自动匹配两个括号。所以,上面的代码可以优化成这个样子:

int a,b,c,d;

cin>>a>>b>>c>>d;

sum=(a+b)/(c-d);

cout<<sum<<endl;

先进行括号里面的计算,较后在计算括号外面的。

随后,又来了一个新的问题(怎么天天都有问题?)

sum=++a;

sum=a++;

//它俩有区别吗?

回答是,肯定有。首先,字面意思是,前者先自加,在赋值 ; 后者是先赋值,在自加。

所以,前者的 sum 为 a + 1,后者的 sum 为 a 。这也是一个致命的错误,必须要注意

那么 C++ 中的运算符只有这些吗?这是不可能的,C++ 的运算符之多,我讲都讲不过来。

刚刚学习完运算符,又有了一个问题(怎么回事?怎么那么多啊)

int 存储的只是整数,但是我想存储小数,怎么办?

让其他类型来拯救你吧,C++ 中有很多不同的类型,如果我们要存储小数,可以用 float (单精浮点数) 和 double (双精浮点数),区别是什么?

double 记录的小数点位数比 float 的多,但是要比 float 慢的多。

如果 int 存储的空间太少,怎么办?

long long 来拯救你,long long 的长度直接变成 -9223372036854775808~9223372036854775807,但是就是比 int 要慢。

如果我要存储字符怎么办?

让 char 来拯救你吧!

char 可以存储一个字符(中文存不了,因为中文占两个字符) 。

C++ 中的数据类型可远远不止这么多

好了,对于 C++ 的入门知识,相信你已经略知一二了。

文档下载

转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。

链接:C++ 入门讲解http://www.gufeng7.com/niaolang/1846.html

联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com