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

文章目录

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

0 前言:

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

1 进入C++

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

cpp 复制代码
#myfirst.cpp
#include<iostream>
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的程序框架如图:

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

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

cpp 复制代码
#include<iostream>
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进行输出,双引号将字符串框起来,不用管里面是什么,计算机会对他进行输

cpp 复制代码
出的处理。
cout <<"Hello World!";
cout << endl;

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

补充:

a.cout<<endl,endl被称为控制符,endl也是在iostream中定义的,

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++的自由格式,将标记间的换行符和空格看作是可以相互替换的。

cpp 复制代码
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;若是不添加的话,需要这样表示------

cpp 复制代码
std::cin>>  
std::cout<<
std::endl.

5 总结

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

6 参考

《C++ Primer Plus》

相关推荐
铁匠匠匠1 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
C-SDN花园GGbond1 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处2 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
leon6253 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林3 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
小齿轮lsl3 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
qq11561487073 小时前
Java学习第八天
学习
white__ice4 小时前
2024.9.19
c++