《C++primer plus》学习笔记——第二章

2024-06-08 08:08

本文主要是介绍《C++primer plus》学习笔记——第二章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、进入C++
    • 1.main()函数的标准
    • 2.cin和cout进行输入和输出的程序必须包含文件iostream
    • 3.头文件名字
    • 4.名称空间
    • 5.使用cout进行C++输出
    • 6.C++源代码的格式化
  • 二,C++语句
    • 1)对于变量声明
    • 2)赋值语句
    • 3)其它C++语句
    • 4)类简介
    • 5)函数
      • A.有返回值的函数
      • B. 函数变体
      • C.用户定义的函数
        • **函数格式**
        • **函数头**
      • D.用户定义的有返回值的函数
      • E.在多函数程序中使用using编译命令
  • 总结

第二章:开始学习C++

一、进入C++

1.main()函数的标准

int main()
{return 0;
}

2.cin和cout进行输入和输出的程序必须包含文件iostream

3.头文件名字

在这里插入图片描述

4.名称空间

如果不用using

Microflop::wanda(".....");Piscine::wanda("....");

上者将其定义放到一个名为Microflop的名称空间,全称如上述所示;
下者的全称如下所示;

iostream中定义的用于输出的cout变量实际上是std::cout,endl实际上是std::endl;

using  namespace std;
表明可以使用std名称空间中定义的名称,而不必使用std::前缀,对于简单程序而言,采用何种名称管理方法无关紧要;上述是一种偷懒的做法,更好的办法是,是使用所需的名称即可;
using std::out;
using std::endl;
using std::cin;

5.使用cout进行C++输出

cout<<".."
双括号括起来的是要打印的消息,在C++中,用双括号括起来的一系列字符叫做**字符串**

在这里插入图片描述

1)控制符endl

表示:重启一行,endl也是在头文件iostream中定义的,位于名称空间std中;

2)换行符

在这里插入图片描述

区别就是:endl能够保证立即显示在屏幕上,而“\n”不能提供这样的保证。

6.C++源代码的格式化

二,C++语句

要将信息项数据存储在计算机中,必须指出信息的存储位置和所需的内存空间。

1)对于变量声明

声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称;
C++的做法是尽可能在首次使用变量前声明它;

2)赋值语句

可以连续使用赋值运算符
在这里插入图片描述

cout的智能行为源自C++的面向对象特性。实际上,C++插入运算符(<<)将根据其后的数据类型相应地调整其行为,这是一个运算符重载的例子。
eg:

int number=25;
cout<<number

程序没有打印number,而是打印存储在number中的整数值,即25。实际上,将这两个操作合二为一了,首先,cout将number替换为当前值25,然后,把值转换为合适的输出字符。
在这里插入图片描述

3)其它C++语句

可以将一条语句放在4行上:

eg:把Now you have 14 carrots.用下面的来表示

cout<<"Now you have ";
cout<<carrots;
cout<<"carrots";
cout<<endl;

4)类简介

定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。

C++类对应于某些语言中的对象类型,而C++对象对应于对象实例或实例变量

函数可以来自函数库,类也可以来自类库。类描述指定了可对类对象执行的所有操作,要对特定对象执行这些允许的操作,需要给该对象发送一条消息。eg:cout对象显示一个字符串,则应向它发送一条消息,告诉他:“对象,显示这些内容!”。
C++提供了两种发送消息的方式:1)使用类方法(函数调用);2)重新定义运算发,eg:cin,cout,

cout<<"…", 就是重新定义<<运算

在这里插入图片描述

5)函数

C++函数分为:有返回值的和无返回值的

A.有返回值的函数

首先是调用过程,如下所示:
在这里插入图片描述

在这里插入图片描述

在使用函数之前,C++编译器必须知道函数的参数类型和返回值类型。C++提供这些信息的方式是使用函数原型语句。

C++程序会为程序中的每个函数提供原型。函数原型之于函数就像变量声明之于变量,需要指出涉及的类型。

eg:
sqart()的描述应该和下面代码中使用的函数相同:

double x;
x=sqrt(6.25)

sqrt()的函数原型像这样:

double sqart(double);

第一个double意味着sqrt()将返回一个double值,括号中的double意味着sqrt()需要一个double参数。原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头(若是函数头,则需要紧接着提供该函数的函数体)。

能够提供原型的两种方法:
1)在源代码文件中输入函数原型
2)包含头文件cmath(or math.h),其中定义了原型(更好,why?对于C++库函数中的每个函数,都在一个或多个头文件中提供了其原型)

函数原型只描述了函数接口,不要混淆函数原型和函数定义。库文件中包含了函数的编译代码,而头文件中则包含了原型。

eg:

在这里插入图片描述

C++允许在程序的任何地方申明新变量,C++还允许在创建变量时,就对她进行赋值,,这称之为初始化,eg:

double side=sqrt(area);

B. 函数变体

在cstlib or stdlib.h头文件相关的库中,包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数,该函数的原型如下:

int rand(boid);

关键字void表明:该函数不接受任何参数。若省略void,则C++将其解释为一个不接受任何参数的隐式申明。eg:my=rand();

C.用户定义的函数

在这里插入图片描述

// ourfunc.cpp -- defining your own function
#include <iostream>
void simon(int);    // function prototype for simon()int main()
{using namespace std;simon(3);       // call the simon() functioncout << "Pick an integer: ";int count;cin >> count;simon(count);   // call it againcout << "Done!" << endl;// cin.get();// cin.get();return 0;
}void simon(int n)   // define the simon() function
{using namespace std;cout << "Simon says touch your toes " << n << " times." << endl;
}                   // void functions don't need return statements

对上面这个函数eg的一些说明

函数格式

有一个函数头,然后是花括号中的函数体

在这里插入代码片在这里插入图片描述

函数头
void simon(int n)

void表明simon()没有返回值,因此调用simon()不会生成可在main()中将其赋给变量的数字。由于simon()没有返回值,因此像如下的调用它:

simp=simon(3);

在这里插入图片描述

这个时候再看看main()函数头,就知道为啥 要return 0;

在这里插入图片描述

这个0返回给操作系统了。

D.用户定义的有返回值的函数

直接看例子:

// convert.cpp -- converts stone to pounds
#include <iostream>
int stonetolb(int);     // function prototype
int main()
{using namespace std;int stone;cout << "Enter the weight in stone: ";cin >> stone;int pounds = stonetolb(stone);cout << stone << " stone = ";cout << pounds << " pounds." << endl;// cin.get();// cin.get();return 0;
}int stonetolb(int sts)
{return 14 * sts;
}

在这里插入图片描述

该例子表明:函数原型描述了函数接口,即函数如何与程序的其它部分交互。参数列表指出了何种信息将被传递给函数,函数类型指出了返回值的类型。

在这里插入图片描述

E.在多函数程序中使用using编译命令

在这里插入图片描述

**

总结

**

在这里插入图片描述

在这里插入图片描述

这篇关于《C++primer plus》学习笔记——第二章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041621

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

C++的模板(八):子系统

平常所见的大部分模板代码,模板所传的参数类型,到了模板里面,或实例化为对象,或嵌入模板内部结构中,或在模板内又派生了子类。不管怎样,最终他们在模板内,直接或间接,都实例化成对象了。 但这不是唯一的用法。试想一下。如果在模板内限制调用参数类型的构造函数会发生什么?参数类的对象在模板内无法构造。他们只能从模板的成员函数传入。模板不保存这些对象或者只保存他们的指针。因为构造函数被分离,这些指针在模板外

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J