【!!!非专业严肃文章】《C++Primer Plus》第一次复习总结(1~4章)【一】

来源:互联网 发布:mac用的办公软件 编辑:程序博客网 时间:2024/05/25 08:13

第一章 预备知识


我这个电脑小白几乎是一脸懵逼地看完了第一章……不明觉厉,我要学习的东西这么高深啊!这个想法好燃怎么破~~~~\(≧▽≦)/

好吧,事实上,我是拿出了练习雅思英语阅读(虽然看的是中文版)的认真劲儿,一点一点地断句(你要原谅我,各种陌生的奇怪的有些还长得差不多的术语堆积在一起真的很

难分清主谓宾啊啊啊……)才看得“懂”的。

这章书的确没什么好说的……我曾尝试过彻底看懂这章的内容,最后失败了,但我还是很认真地很耐心的看完了它。很枯燥,但至少我坚持继续看,而不是把它扔到书架的角落

里,就像我对上次对待那本经济学类入门书籍一样(我已经忘记叫啥了)……难怪最后我选了工科……


啊啊啊啊, 我到底在说什么啊……认真认真~~~

本章内容大概为:

       1、C++的性质还有形成过程之类的

       2、程序创建的技巧(这我直接抄目录的,因为真不懂它在讲啥,大概是……额……编程的准备??我猜……)


看完本章后,根据第2点的内容,还有前言最后一段的建议,我下载安装了Microsoft Visual C++ 2010用来做练习。




第二章 开始学习C++


这章整体内容还是比较简单的我大概花了三天左右就完成这章的学习。

内容大约为一个基本程序的大概组成,其中关于某些术语的解释还是有些难懂。


2.1

在经过一轮不复习学习到第四章后,对于#include<iostream>     int main()  using namespace std  的印象只剩——每个程序都需要它们。

今天整理一下:

      (1)#include<iostream>——2.1.3、2.1.4

                预处理器编译指令(preprocessor directive):  #include

                头文件/包含文件(include file / header file): <iostream>

               #include<iostream>内容:预处理器将iostream文件内容添加到程序中

               存在原因:要使用cin 和 cout

                其他:

               预处理器(不讨论翻译器)处理名称以#开头的编译指令

               头文件(因在文件开头而得名):支持一组特定工具,因此程序需要时要用#include指令将相关文件发送给编译器

               头文件命名约定……(p17 表2.1)

               io指输入和输出

               不解:

              a)头文件里到底有什么?

              b)预处理器编译指令是不是只有#include?

      (2)int main()——2.1.1

                函数头(function heading):int main()

                函数返回类型(function return type):int【定义:描述了 从函数 返回给 调用它的函数 的信息】

               形参列表/参数列表(argument list / parameter lisr):()中的部分【定义:描述了 从调用函数 传递给 被调用的函数 的信息】            

               存在原因:函数头描述的是main()和操作系统(operating system)之间的接口(interface)        //不懂……

               int main() 内容:main()函数可以给调用它的函数返回一个整数值,切不从调用它的函数那里获得任何信息

               其他:

               main()被启动代码(startup code)调用,启动代码是由编译器添加到程序中的

               给调用函数返回的值叫返回值(return value)              

              ()表示该函数不接受任何信息  

              (void)等效于()

              运行C++程序是要从main()函数开始执行,没有main()程序将不完整

              不解:

              a)所以接口到底是什么东西?

              b)“main()被启动代码(startup code)调用,启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁”——引用原文:所以接口在这里是只启动代码吗?

            

               {     }花括号(braces)——2.1.1

              括号中的部分为函数体(function body)

     (3)using namespace std;——2.1.5

              名称空间的名字:std

              using编译指令:using namespace std;

              其他:

              名称空间支持是一项C++特性

              如果使用iostream而不是iostream.h,则需要使用using namespace std

              cout实际上是std::cout   endl实际上是std::endl  cin实际上是std::cin

             不解:

             a)“类,函数和变量便是C++的标准组件”是什么意思?

             b)类(class)是什么?

      

              补充——2.4.5:

              多函数程序中,可将编译指令放在函数外面且在所以函数的前面

    (4)cout——2.1.6

              cout是一个预定义的对象(object)

              定义:如何显示字符串、数字和单个字符

             cout的对象属性包括一个插入运算符(the insertion operator)“<< ”

             使用方式:cout<<……

             其他:

             对象是类的特定实例

             类定义了数据的储存和使用方式→(3)b)

            不解:

            a)为什么会觉得用流(stream)这种抽象的概念解释cout会更好?

           

            补充——2.2.3

            e.g cout<<carrots;  //carrots 是变量

            输出的是存储在carrots中的值

            不解:

            b)“C++插入运算符(<<)将根据其后数据类型相应的调整其行为,这是一个运算符重载的例子”  运算符重载是什么意思?

     (5)endl——2.1.6

               控制符(the manipulator):对cout来说有特殊意义的特殊符号,e.g endl

              作用:重起一行

               其他:

               类似作用的“\n"——C语言符号,被视作字符,名为换行符

     (6)//——2.1.2

             用于注释(comments)

             用法:注释以//大头,到行尾结束(可以单独一行也可以和代码同行)

             其他:

             C风格的C注释:注释包括在符号/*和*/之间【以*/结束,所以可以跨越多行】

       

      (7)声明语句(declaration statement)——2.2.1 

                程序中称为定义声明(defining declaration statement)简称为定义(definition)

                作用:指出信息的储存类型并提供位置标签(给储存单元指定名称)

                声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称

                e.g int carrots;

                它将导致编译器为变量分配内存空间

                其他:

                引用声明(reference declaration):命令计算机使用在其他地方定义的变量

                声明不一定是定义

                C++通常在首次使用变量前声明它

                不解:

                a)“声明不一定是定义”,比如?

      (8)赋值语句(assignment statement)——2.2.2

                作用:将值赋给存储单元

                e.g carrots = 25;

                赋值运算符(assignment operator): =

       (9)cin——2.3.1

                作用:输入时,cin使用>>运算符从输入流中抽取字符

               通常需要在>>右侧提供一个变量,一接收抽取信息

     (10)类(class)——2.3.3

               概念:

               类是C++ 中面向对象编程(oop)的核心概念之一

               类是用户定义的一种数据类型

               定义类 需要描述 它 能够表示什么信息 和 可对数据执行哪些操作

               类&对象:

               类之于对象就像类型之于变量   //是指类是用来修饰对象

               类定义描述的是数据格式及其用法

               对象则是根据数据格式规范创建实体

               类对应对象类型

               对象对应对象实例或实例变量        

               e.g cout

                cout是一个ostream类对象,ostream类定义描述了ostream对象表示的数据以及可以对它执行的操作【cin 是istream的类对象】

             其他:

             发送信息有两种方法1)使用类方法(本质上是函数调用)2)重新定义运算符(cin 和 cout)

     (11)函数

               C++函数分两种:有返回值和没有返回值的

               e.g. sprt() 返回平方根(有返回值的库函数)

                       sprt(6.25) [ 称为函数调用(function call)] 将调用sprt()函数

                       被掉用函数(called function) 调用函数(calling function)

                      (6.25)中的值叫参数,是发送给函数的信息

                       结果为2.5,发送给调用函数,2.5称为函数的返回值

                使用函数前,C++编译器必须知道函数的参数类型和返回值类型【方法是使用函数原型语句(function prototype statement)】

                函数原型修饰函数(e.g. double sprt(double) ;)【分号表明它是个原型,一条语句,而不是函数头】

                函数原型&函数定义:

                  原型只描述函数接口【即函数如何与函数其他部分交互】

                  定义包含了函数的代码

                 库文件包含函数的编译代码

                 头文件包含了原型

               函数变体:

              1)使用多个参数的函数,参数间用逗号分开 e.g pow()【double pow(double, double) 第一个数为底第二个位指数的幂

              2)不接受任何参数的函数  e.g rand()【返回一个随机整数】

              3)没有返回值的函数  【对于这种函数,不能这样使用: simple = Simon(3);】

              用户定义的函数

              【库函数在使用前必须提供其原型,通常把原型放到main()定义之前】

              【用户定义的函数需要用户提供新函数的源代码,建议将代码放在main()后面(第二段的意思p30)】


     (12)源代码的格式化

                  分号; 标示了语句的结尾

                  回车的作用(和空格制表符一样)是将语句分开

                  不能把空格(或其他)放在元素(比如名称)中间

                  不能把回车放在字符串中间

                 一行代码中不可分割的元素叫做标记(token)

                 必须用空白将两个标记分开

                 空白:空格、制表符、回车


            

             

0 0