C++ 入门讲解
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 文件就是源代码文件,命名完后可以看到名字已经不是未命名了
随后,就是要让编译器翻译这段代码了
在翻译之前,我们先来看看我们要怎么操控它
编译:让编译器翻译源文件。
运行:让编译器运行翻译后的文件(.exe)。
编译并运行:很显然,先编译再运行。
在这里,我们必须先编译完才可以运行。(因为 C++ 不是解释型语言......)
编译完成后,下方会出现编译后的结果
然后再点击运行,就会出现一个黑框,里面写着 Hello December 这句话
除了输出 Hello December , 其他都是程序结束时做的
如果你的编译器列出了一条红色的线,说明你的源代码写的有问题。
还有一种情况,它没有红线,但是却报错了,这样的原因可能是因为编译器不允许你运行两个同样的代码。
想要打开 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