从头开始学习C++(C++Primer第五版)

从头开始学习C++(C++Primer第五版)

前言:预热一下(请根据相关书籍阅读本篇文章)

  • 我自己是学过C、C++、Java、JavaScript 这四个,但是现在还是不清楚这之间的共同的和区别。因此,有必要预热一下。
  • 关于什么是编译性语言和解释性语言
  • 参考链接:编译性语言和解释性语言的区别
  • 我自己的整理:以下用C语言代替编译性语言,Javascript代替解释型语言。C语言在我以前用VC++写过之后,有一个 .exe文件,而这个文件可以直接点开使用,就好像一个程序一样。比如我下载的游戏,有一个launch.exe文件,点击可以运行游戏了。而JavaScript这样的,写过之后只是出来一个文本格式的文件,可以是记事本,可以是HTML,或者别的,但是C语言就看不到源代码。在我们需要运行JavaScript的时候,会通过一个叫做解释器.exe 文件(程序)运行,先将需要运行的那句人能看懂的源代码转为二进制码,再运行。综合比较一下1、 C语言编写的好处,就是只需要将源代码编译一次,转为二进制生成 .exe 文件,就可以反复运行了,点开,关闭就行。但是看不到源码,并且你也知道这个文件不一定能在任何的系统上运行,比如在Windows可以,在MacOS不一定行。也可能在64位系统行,32位不行,局限性大。2、 JavaScript编写的源代码,好处是每个系统都有对应的解释器,然后需要哪条语句就执行哪条,可以做到 “ 到处执行 ”。但是比较慢,因为要先编译再执行,而C语言的直接执行了。
  • 半编译半解释:典型代表JavaC#
  • Java是将人能看懂的源代码,通过编译器转为 .class的字节码文件(人和机器都看不懂),然后将这个字节码文件,转给给个系统上面的不同的JVM虚拟机运行,可以做到到处运行。可是为什么不直接成为解释性的呢?还要多一个转为字节码的步骤呢?其实我试验过,我们在写代码的时候会加很多注释,这些注释其实没有用,转为字节码就是筛掉这些注释,提取有用的,让文件小点,同时可以重复使用(这里我不太懂)。

1、第一章:开始

  • 代码:
#include<iostream>
int main() {
	//输入数字,用空格隔开,Ctrl+Z结尾,接上回车,打印各个数字输入的次数。
	std::cout << "输入数字,用空格隔开,Ctrl+Z结尾,接上回车,打印各个数字输入的次数:\n" << std::endl;
	int input = 0, store = 0;
	if (std::cin >> input) {
		int count = 1;
		while (std::cin >> store) {
			if (store == input) {
				count++;
			}
			else{
				input = store;
				std::cout << "数字" << input << "出现的次数为" << count << "次!\n" << std::endl;
			}
		}
	}

	return 0;
}

上面的代码是C++代码,统计输入并打印的数字的个数。

  • iostream是包含标准输入、输出的一个库(是什么暂时作者也没有懂)。std::cout代表命名空间std里面的cout,这个命名空间是存放很多名字的地方,我暂时只能理解为库吧,虽然不一样,但是我是理解为,一个库里面的有cout,而且别的库里面也可能有cout这个名字,所以加上专属的命名空间,就好比我是一班的小孟,这样就不会跟二班的小孟弄混了。
  • << / >> :这两个其实是输出/输入运算符。我用我自己的理解来描述一下这个使用运算符的过程。
std::cout << "数字" << input << "出现的次数为" << count << "次!\n" << std::endl;
  • 运算符最左边的cout,可以理解为一个缓存空间,然后从第一个运算符开始,运算符右边的交给运算符左边的。第一个是将input这个变量的值放入cout缓存空间,然后将第二个运算符右边的字符串放进去,再把第三个字符串放进去。此时一切可以正常打印了,但是,前面的步骤我是这样理解的:
    • 键盘输入的和程序里面写的东西转为输入流传到了缓存中,哪怕是输出,也得先写进cout代表的缓存区,这就是以上步骤。但是cout的作用就是打印,那它就会把缓存里要输出的显示出来。但是我们并没有结束输入流,同时也没有把缓存里面的数据转为输出流然后打印在显示器上。如果这个时候,程序崩溃了,那报错的时候,会把缓存里面的错误报出来,但是缓存里面还有我们待输出的数据,这样影响错误位置判断。因此加上endl的目的就是结束当前行(应该是结束输入流吧),然后将缓存的东西刷新到输出流,然后刷到显示器上面。
  • 在这里多嘴一句: C++最重要的一点就是面向对象,作者是学习Java后再回过头复习C++,因此感悟很多。所谓面向对象,就是程序员不需要考虑具体代码的编写,主要考虑要实现的功能,而这些具体功能的代码,其实可以想象成手机,我不需要考虑手机怎么做,我只要知道它有什么功能,我要用什么功能,就行。因此,引出新的类型:类类型 。我们知道什么int 、double 、float 、boolean 等等。所以这个类类型就是class 类型,这个类型是自定义的类型。比如我定义一个手机类型,在这个类里面写了打电话、发短信、上网等功能,而这些功能就是手机类里面的方法 。只是提一下。
  • 关于C++的开始就到此为止,其他代码有代码基础的都懂的,我就不赘叙了。

2、第二章:变量和基本类型(搁置中… …)

  • 学后总结:本章我初步认为很重要,毕竟说的是基本的数据类型,还有一些限定的东西。但是因为我们真正做项目不一定要到太多,我觉得这章又有点难啃,所以可以知道有哪些就行了。不过这只是我最初步的理解吗,可能真的做项目会用到很多。
  • 图片(给我自己看的,方便写总结)在这里插入图片描述
  1. 类型与变量及其定义与声明
    1、类型:类型有:(很抱歉,作者因个人需求将直接从本书第六章开始,以后会补上)。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值