《C++ Primer Plus》《2、开始学习C++》

文章目录

  • 0 前言:
  • 1 进入C++
    • 1.1 main()函数
    • 1.2 C++注释
    • 1.3 预处理器和iostream
    • 1.4 头文件名
    • 1.5 名称空间
    • 1.6 使用cout进行C++输出
    • 1.7 C++源代码的格式化
  • 2 C++语句
    • 2.1 声明语句和变量
    • 2.2 赋值语句
    • 2.3 cout语句
  • 3 其他C++语句
    • 3.1使用cin
    • 3.2 使用cout进行拼接
    • 3.3 类简介
  • 4 函数
    • 4.1 有返回值的函数
    • 4.2 函数变体
    • 4.3用户自定义的函数
    • 4.4 用户定义有返回值的函数
    • 4.5 使用using编译指令
  • 5 总结
  • 6 参考

0 前言:

基础知识是对C++特性,历史的一些介绍,并不涉及C++语言的实质。本章对C++语言的基本结构做一下概述,具体的细节,日后会一步步去完善。

1 进入C++

任何一句语言的初始,便是在界面上输出“Hello World!”,进而打开新世界的大门,感觉不对这个世界打声招呼,不好意思开始一样。C++也不例外。

#myfirst.cpp
#include
int main(){
using namespace std;
cout <<"Hello World!";
cout << endl;
return 0;
}

之前学过C的会对这个程序既陌生又熟悉,下面来对myfirst.cpp程序的元素进行分析:
1)注释//;
2)预处理编译指令#include;
3)主函数int main();
4)编译指令 using namespace;
5)函数体的部分用{}包围;
6)用cout 显示消息语句;
7)用return 语句终结函数。

1.1 main()函数

myfirst.cpp的程序框架如图:

int main(){
statements;
return 0;
}

最早在学习C语言的时候,就一直在main()函数里面捣腾,所以对main语言,再熟悉不过。int main()叫函数头,{}括起来的部分叫作函数体,在C++中,每条完整的指令都成为语句,用分号来结束。其中最后一条return 0语句叫作返回语句,用它来对函数进行终结。
对main()函数作如下说明:
1)为什么只能是main()函数:
而不是A函数,B函数,C函数。我的解释是:当程序只有一个函数时,这个函数必须只能是main()函数(规定的事,不照办不好使),在运行C++程序时,通常是从main()函数开始执行的,如果没有main(),程序是不完整的,也将无法进行编译。
2)int main代表了什么
来看一下main()的接口描述,该接口从int 开始,main()函数将返回一个整数值,即int规定了函数返回值的类型。int main是一种缩略的写法,完整的写法是int main(void)。
3)语句与分号
语句是要执行的操作,为了理解源代码,编译器需要知道语句如何进行起止。语句之间需要使用语句分隔符,在C++中,使用的是分号对语句进行分隔。

1.2 C++注释

写程序,必须要进行注释,不然无法让别人对你的程序进行理解。C++的注释方式沿袭了C。有两种注释方法。
1)//用来对行进行注释,无法跨行发生作用;
2)/* */的注释,可以跨行进行注释。

1.3 预处理器和iostream

在学习的初期,这样的两行代码基本成了标配:

#include
using namespace std;

#include是一种预处理,将iostream中的内容加入到程序中来,程序不仅仅只是main就完全实现功能,需要在源代码编译之前替换或添加文本。

1.4 头文件名

像iostream这样的文件就叫作包含文件(也叫作头文件),C++编译器自带了很多头文件,每个头文件都支持一组特定的工具,让程序在实现功能的前提下轻装上阵。以前的C++头文件都有“.h”的后缀,新式的C++风格没有扩展名。

头文件类型 约定 示例 说明
C++旧式风格 以.h结尾 iostream.h C++可用
C旧式风格 以.h结尾 math.h C,C++可用
C++新式风格 没有扩展名 iostream C++可用
转换后的C 加上前缀c,没有扩展名 cmath C++可用

1.5 名称空间

using namespace std;叫作using编译指令,名称空间支持是C++的一个特性。举个例子:用两个已经封装好的产品,里面都包含了一个函数——walk(),编译器不知道这个函数该用哪个产品的,这时候便可以用名称空间来进行标定,比如A公司的函数,A::walk();若是B公司的,则用B::walk()来进行表示。这样程序就可以使用名称空间来区分不同的版本。
就好像是个百宝箱,但是要先using先声明一下,才可以使用。

1.6 使用cout进行C++输出

之前的“Hello world”程序,利用cout进行输出,双引号将字符串框起来,不用管里面是什么,计算机会对他进行输

出的处理。
cout <<"Hello World!";
cout << endl;

"<< "表示该语句将字符串发送给了cout,有一种很形象的说法,这个符号指出了信息流动的路径。从C++的概念上理解这个过程,输出是一个流,即从程序流出的一段字符串。cout对象属性包括一个插入运算符,他可以将右侧的信息插入到流中。与其说程序显示了一条消息,不如说他将一个字符串插入到了输出流中。

补充:
a.cout< b.C语言中的换行符是”\n”,\n叫作换行符,在C++也能使用。

1.7 C++源代码的格式化

  • 1)源代码中的标记与空白

a.在一行代码中不可分割的元素叫作标记;
b.空格,制表符,回车统称为空白;
字符与字符之前需要添加一些空白,适当的空白使得程序可读性更强;不合时宜的空白会使得程序报错。

  • 2)C++源代码的风格

为了提升自己的编码水平,首先需要输入一些“代码是非观“知道哪些是好的,高水平的代码。如下是编程需要遵循的一些原则。
a.一条语句占据一行,不要一条语句占据多行;
b.每个函数都有{},这两个花括号各占一行;
c.为了条理清晰,函数中的语句相对于花括号需要进行缩进;
d.与函数名称相关的圆括号周围没有空白。

2 C++语句

书中给出了carrots.cpp的示例代码。

2.1 声明语句和变量

声明语句,即你在用这个变量的时候,需要确定这个变量是哪种数据类型,以及它自身的变量名称。原则是:使用这个变量前需要先对其进行声明。

2.2 赋值语句

声明这个变量还不够,需要对其进行赋值,才能知道这个变量的具体数值,否则只会是一个没有意义的随机数。“=“是赋值语句。

2.3 cout语句

cout不仅可以打印字符串,也可以打印出变量的值,而不用对变量的数值类型做声明,我觉得这是C++比C更智能的地方。

3 其他C++语句

3.1使用cin

cin是与cout相对应的概念,cout是将字符串插入到数据流中,相对应的,cin是使用运算符>>从输入流中抽取字符。

3.2 使用cout进行拼接

C++的自由格式,将标记间的换行符和空格看作是可以相互替换的。

cout<<"Hello"<<"world";等价于
cout <<"Hello"	
<<"world";

3.3 类简介

类是用户定义的一种数据类型,需要描述它能够表示什么信息,以及可对数据执行哪些操作,后续会详细讲解。

4 函数

程序的实现依赖于函数,所以有必要加深对函数的理解。

4.1 有返回值的函数

顾名思义,这个函数带有一个返回值,而调用这个函数的程序将会获得这个返回值。书中以sqrt()举例,说明调用函数后的具体流程。

4.2 函数变体

2.4.1的sqrt()函数,中规中矩,它既有输入的参数,也拥有返回值。但是函数的参数,可以没有,可以有1个,也可以有很多个,这都是允许的。至于返回值,函数可以有返回值,也可以没有返回值,只是完成相应操作即可。

4.3用户自定义的函数

从图像中可以看出,首先包含了头文件,使用了using编译指令,在main()函数之前声明了函数原型,然后在写函数的实现方式,最后main()函数在实现的过程中调用自定义的函数,过程大抵如此。

4.4 用户定义有返回值的函数

一个函数的特性:
1)有函数头和函数体
2)接受一个参数
3)返回一个值
4)需要一个原型(声明一个原型)
在对传入的参数,做一定的处理之后,return 即可。

4.5 使用using编译指令

在初期需要用到cin,cout,endl,这些都需要先using std的名称空间,当然这是偷懒的做法。例如在头函数包含下,添加语句using namespace std后便可以直接使用cin,cout,endl;若是不添加的话,需要这样表示——

std::cin>>  
std::cout<<
std::endl.

5 总结

这一章通过“HelloWorld.cpp”敲开了C++的大门,了解了预编译处理器,头文件,using编译指令,main函数,其他功能函数,以及C++的6种语句,cin,cout,C++的学习之路刚刚开始。

6 参考

《C++ Primer Plus》

你可能感兴趣的:(#,《C++,Primer,Plus》,c++,学习,开发语言)