IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 第二章 开始学习C++ -> 正文阅读

[C++知识库]第二章 开始学习C++

第二章 开始学习C++

2.1 进入C++

//预处理器编译指令#include
//include<iostream>
//函数头。
int main(){
    //函数体,用{和}括起
    //编译指令
    using namespace std;
    //C++能够使用printf()、scanf()、和其他所有标准C输入和输出函数,只需要包含常规C语言的stdio.h文件
    cout<<"hello world";
    cout<<endl;
    //结束main()函数的return语句
    return 0;
}

2.1.1 main()函数

int main(){
	statements
	return 0;
}
  • 这几行表明有一个名为main()的函数,并描述了该函数的行为。
  • 这几行代码构成了函数定义。该定义由两部分组成:第一行int main()叫函数头,花括号中包括的部分叫函数体。
  • 函数头对函数与程序其他部分之间的接口进行了总结;函数体是指出函数应做什么的计算机指令。
  • main()中最后一条语句叫做返回语句,它结束该函数。

在这里插入图片描述

2.1.1.1 作为接口的函数头

  • C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口。
  • 位于函数名前面的部分叫做函数返回类型,它描述的是从函数返回给调用它的函数的信息。
  • 函数名后括号中的部分叫做形参列表或参数列表,它描述的是从调用函数传递给被调用的函数的信息。
  • main()被启动代码调用,而启动代码是由编译器添加到程序中的,是程序和操作系统之间的桥梁。事实上,该函数头描述的是main()和操作系统之间的接口。

2.1.1.2 为什么main()不能使用其他名称

  • 在运行C++程序时,通常从main()函数开始执行。因此,如果没有main(),程序将不完整,编译器将指出未定义main()函数。

2.1.2 C++注释

  • 单行注释//
  • 多行注释/**/

2.1.3 C++预处理器和iostream文件

  • C++和C一样,也使用一个预处理器,该程序在进行主编译之前对源文件进行处理。不必执行任何特殊的操作来调用该预处理器,它会在编译程序时自动运行。
#include<iostream>
  • 该编译指令导致预处理器将iostream文件的内容添加到程序中。这是一种典型的预处理器操作:在源代码被编译之前,替换或添加文本。
  • #include编译指令导致iostream文件的内容随源代码文件的内容一起被发送给编译器。实际上,iostream文件的内容将取代程序中的代码行#include。原始文件没有被修改,而是将源代码文件和iostream组成成一个复合文件,编译的下一阶段将使用该文件。

2.1.4 头文件名

  • 像iostream这样的文件叫做包含文件——由于它们被包含在其他文件中;也叫头文件——由于它们被包含在文件起始处。C++编译器自带了很多头文件,每个头文件都支持一组特定的工具。
  • 头文件命名约定

在这里插入图片描述

2.1.5 名称空间

  • 名称空间支持是一项C++特性,旨在编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。

  • 编译指令的三种使用方式:

std::cout>>"hello world";
using namespace std;
using std::cout;

2.1.6 使用cout进行C++输出

//将一个字符串插入到了输出流中
cout<<"hello world";
  • <<符号表示该语句将把这个字符串发送给cout;该符号指出了信息流动的路径。
  • 同一个符号可以有多种含义,而编译器可以根据上下文来去确定其含义。C++扩展了运算符重载的概念,允许为用户定义的类型重新定义运算符的含义。
  • cout是一个预定义的对象,知道如何显示字符串、数字和单个字符等。
  • 输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性是在iostream文件中定义的。cout的对象属性包括一个插入运算符(<<),它可以将其右侧的信息插入到流中。

2.1.6.1 控制符endl

  • endl是一个特殊的C++符号,表示一个重要的概念:重起一行。在输出流中插入endl将导致屏幕光标移到下一行开头。
  • 诸如endl等对于cout来说有特殊含义的特殊符号被称为控制符。和cout一样,endl也是在头文件iostream中定义的,且位于名称空间std中。

2.1.6.2 换行符

  • C++还提供了另一种在输出中指示换行的旧式方法:C语言符号\n。\n被视为一个字符,名为换行符。
  • endl和\n都是换行,但是endl还有一个额外的功能:清槽,把缓冲槽里的内容输出到控制台。

2.1.7 C++源代码的格式化

  • 在C++中,分号标识了语句的结尾。因此,在C++中,回车的作用就和空格或制表符相同。

2.1.7.1 源代码中的标记和空白

  • 一行代码中不可分割的元素叫做标记。
  • 必须用空格、制表符或回车将两个标记分开,空格、制表符和回车统称为空白。有些字符(如括号和逗号)是不需要用空白分开的标记。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWCKJvDn-1644067662060)(E:\代码练习\C++ Primier Plus\img\空白和标记.png)]

2.1.7.2 C++源代码风格

  • 每条语句占一行
  • 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行
  • 函数中的语句都相对于花括号进行缩进
  • 与函数名称相关的圆括号周围没有空白

前三条规格旨在确保代码清晰易读;第四条规则帮助区分函数和一些也使用圆括号的C++内置结构(如循环)。

2.2 C++语句

  • C++程序是一组函数,而每个函数又是一组语句。
  • 声明语句创建变量,赋值语句给该变量提供一个值。

2.2.1 声明语句和变量

  • 计算机是一种精确的、有条理的机器。要将信息项存储在计算机中,必须指出信息的存储位置和所需的内存空间。在C++中,完成这种任务的一种相对简便的方法,是使用声明语句来指出存储类型并提供位置标签。
  • 程序中的声明语句叫做定义声明语句,简称为定义。这意味着它将导致编译器为变量分配内存空间。在较为复杂的情况下,还可能有引用声明。
int carrots;
  • 这条语句提供了两项信息:需要的内存以及该内存单元的名称。
  1. 程序需要足够的存储空间来存储一个整数,在C++中用int表示整数。编译器负责分配和标记内存的细节。
  2. 给存储单元指定名称。该声明语句指出,此后程序将使用名称carrots来标识存储在该内存单元中的值。carrots被称为变量,因此它的值可以修改。在C++中,所有变量都必须声明。

2.2.2 赋值语句

carrots = 25;
  • 赋值语句将值赋给存储单元。例如,上面的语句将整数25赋给变量carrots表示的内存单元。
int a;
int b;
int c;
a = b = c = 88;
  • 赋值将从右向左进行。首先,88被赋给c;然后,c的值被赋给b……
carrots = carrots-1;
  • 赋值运算符右边的表达式carrots-1是一个算术表达式。计算机将变量carrots的值25减去1,得到24。然后,赋值运算符将这个新值存储到变量carrots对应的内存单元中。

2.2.3 cout的新花样

  • 在打印之前,cout必须将整数形式的数字转换为字符串形式。
  • C++插入运算符(<<)将根据其后的数据类型相应地调整其行为,这是一个运算符重载的例子。

2.3 其他C++语句

2.3.1 使用cin

  • iostream文件将cin定义为一个表示流入程序的字符流对象。
  • 输出时,<<运算符将字符串插入到输出流中;输入时,cin使用>>运算符从输入流中抽取字符。
  • 通常,需要在运算符右侧提供一个变量,以接收抽取的信息(符号<<和>>被选择用来指示信息流的方向)。
  • 与cout一样,cin也是一个智能对象。它可以将通过键盘输入的一系列字符(即输入)转换为接收信息的变量能够接受的形式。

2.3.2 使用cout进行拼接

  • iostream文件定义了<<运算符,以便可以合并输出。这样能够将字符串输出和整数输出合并为一条语句。
//格式一
cout<<"Now you have"<<carrots<<"carrots."<<endl;
//格式二
cout<<"Now you have";
cout<<carrots;
cout<<"carrots.";
cout<<endl;
//格式三
cout<<"Now you have"
	<<carrots
	<<"carrots."
	<<endl;

2.3.3 类简介

  • 类是用户定义的一种数据类型。要定义类,需要描述它能够表示什么信息和可对数据执行哪些操作。类之于对象就像类型之于变量。
  • 类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。
  • 类描述指定了可对类对象执行的所有操作。要对特定对象执行这些允许的操作,需要给该对象发送一条消息。C++提供了两种发送消息的方式:一种方式是使用类方法;另一种方式是重新定义运算符。

2.4 函数

2.4.1 使用有返回值的函数

  • 有返回值的函数将生成一个值,而这个值可赋给变量或在其他表达式中使用。

  • 被调用的函数叫做被调用函数,包含函数调用的函数叫做调用函数。

  • 参数是发送给函数的信息,返回值是从函数中发送回去的值。

  • 可以这么认为,函数执行完毕后,语句中的函数调用部分将被替换为返回的值。

  • 在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型;如果缺少这些信息,编译器将不知道如何解释返回值。C++提供这种信息的方式是使用函数原型语句。

  • 函数原型之于函数就像变量声明之于变量——指出涉及的类型。

    double sqrt(double);
    //第一个double意味着sqrt()将返回一个double的值。
    //括号中的double意味着sqrt()需要一个double参数。
    //原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头。
    //如果省略函数头,编译器将把这行代码解释为一个函数头,并要求接着提供定义该函数的函数体。
    
  • 在程序中使用sqrt()时,也必须提供原型。可以用两种方法来实现:①在源代码文件中输入函数原型;②包含头文件cmath,其中定义了原型。

  • 原型只描述函数接口,它描述的是发送给函数的信息和返回的信息。而定义中包含了函数的代码。

  • C和C++将库函数的这两项特性(原型和定义)分开了。库文件中包含了函数的编译代码,而头文件中则包含了原型。

  • 应在首次使用函数之前提供其原型。通常的做法是把原型放到main()函数定义的前面。

#include<iostream>
#include<cmath>

int main()
{
    using namespace std;
    double area;
    cout<<"输入area的值:";
    cin>>area;
    double side = sqrt(area);
    cout<<"area的平方根为:"<<side;
    return 0;
}

2.4.2 函数变体

  • 有些函数需要多项信息。这些函数使用多个参数,参数间用逗号分开。
//数学函数pow()接受两个参数,返回值为以第一个参数为低,第二个参数为指数的幂。
#include<iostream>
#include<cmath>
int main(){
    using namespace std;
    int answer = pow(2,3);
    cout<<"2的3次方的值为:"<<answer;
    return 0;
}
  • 另外一些函数不接受任何参数。
//在cstdlib库中包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数。
#include<iostream>
#include<cstdlib>
int main(){
    using namespace std;
    int answer = rand();
    cout<<"输出一个随机值为:"<<answer;
    return 0;
}
  • 还有一些函数没有返回值。可以在原型中使用关键字void来指定返回类型,以指出函数没有返回值。

2.4.3 用户定义的函数

2.4.3.1 函数格式

type functionname(argumentlist)
{
	statements
}
  • 首先有一个函数头,然后是花括号中的函数体。
  • C++不允许将函数定义嵌套在另一个函数定义中。每个函数定义都是独立的,所有函数的创建都是平等的。

2.4.3.2 函数头

void simon(int n)
  • 开头的void表明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋给变量的数字。
  • 括号中的int n表明,使用simon()时,应提供一个int参数。
  • 计算机操作系统(如UNIX或Windows)对main()函数进行了调用。因此mian()的返回值并不是返回给程序的其他部分,而是返回给操作系统。

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

  • main()函数已经揭示了有返回值的函数的格式:在函数头中指出返回类型,在函数体结尾处使用return。
  • 通常在可以使用一个简单变量的地方,都可以使用一个返回值类型与该常量相同的函数。

2.4.5 在多函数程序中使用using编译指令

让程序能够访问名称空间std的方法有多种,下面是其中的4种:

  • 将using namespace std;放在函数定义之前,让文件中所有的函数都能够使用名称空间std中所有的元素。
  • 将using namespace std;放在特定的函数定义中,让该函数能够使用名称空间std中的所有元素。
  • 在特定的函数中使用类似using std::cout;这样的编译指令,让该函数能够使用指定的元素,如cout。
  • 完全不使用编译指令using,而在需要使用名称空间std中的元素时,使用前缀std::。

2.5 总结

  • C++程序由一个或多个被称为函数的模块组成。程序从main()函数开始执行,因此该函数必不可少。
  • 函数由函数头和函数体组成。函数头指出函数的返回值的类型和函数期望通过参数传递给它的信息的类型。函数体由一系列位于花括号中的C++语句组成。

有多种类型的C++语句,包括下述6种:

  • 声明语句:定义函数中使用的变量的名称和类型。

  • 赋值语句:使用赋值运算符(=)给变量赋值。

  • 消息语句:将消息发送给对象,激发某种行动。

  • 函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句。

  • 函数原型:声明函数的返回类型、函数接受的参数数量和类型。

  • 返回语句:将一个值从被调用的函数那里返回到调用函数中。

  • 类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。

  • 对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。

  • C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。

  • 为ostream类定义的插入运算符(<<)使得数据插入到输出流成为可能;为istream类定义的抽取运算符(>>)能够从输入流中抽取消息。

  • cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。

  • C++可以使用大量的C库函数。要使用库函数,应当包含提供该函数原型的头文件。

函数原型:声明函数的返回类型、函数接受的参数数量和类型。

  • 返回语句:将一个值从被调用的函数那里返回到调用函数中。

  • 类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。

  • 对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。

  • C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream和ostream类的实例,这两个类是在iostream文件中定义的。

  • 为ostream类定义的插入运算符(<<)使得数据插入到输出流成为可能;为istream类定义的抽取运算符(>>)能够从输入流中抽取消息。

  • cin和cout都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。

  • C++可以使用大量的C库函数。要使用库函数,应当包含提供该函数原型的头文件。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:38:43  更:2022-02-06 13:40:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:43:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码