百度资料c++primerplus第六版学习笔记 0111 2210+Word格式.docx
《百度资料c++primerplus第六版学习笔记 0111 2210+Word格式.docx》由会员分享,可在线阅读,更多相关《百度资料c++primerplus第六版学习笔记 0111 2210+Word格式.docx(101页珍藏版)》请在冰豆网上搜索。
19
5、运算符sizeof和头文件limits20
符号常量-预处理器方式(注译)21
6、初始化21
c++初始化方式21
7、无符号类型22
8、选择整数类型23
9、整型字面值24
10、C++如何确定常量的类型25
11、char类型:
字符和小整数26
成员函数cout.put()27
Char字面值and转义序列27
通用字符名28
signedchar和unsignedchar29
wcha_t29
C++11新增的类型:
char16_t和char32_t29
Bool类型30
12、const限定符(定义符号常量)30
13、浮点数30
书写浮点数31
浮点类型31
浮点常量32
浮点数的优缺点33
将类型分类*注译33
13、c++算术符33
运算符优先级和结合性34
除法分支34
运算符重载(注译)34
求模运算符35
类型转换36
14、总结38
15、第三章复习题39
16、编程练习40
第四章、复合类型40
1、数组40
3、数组的初始化规则42
4、c++数组初始化方法42
5、字符串43
拼接字符串常量43
在数组中使用字符串43
字符串输入45
每次读取一行字符串输入46
混合输入字符串和数字47
6、string类简介48
C++11字符串初始化49
赋值、拼接和附加49
String类的其他操作(包含了确定字符数函数)50
String类I/O50
其他形式的字符串面值52
7、结构简介52
在程序中使用结构53
C++结构初始化55
结构可以将string类作为成员吗56
其他结构属性56
结构数组56
结构中的位字段57
9、共用体57
10、枚举58
设置枚举量的值59
枚举的取值范围59
11、指针和自由存储空间59
声明和初始化指针61
指针的危险62
指针和数字63
使用new来分配内存63
使用delete释放内存64
使用new来创建动态数组65
12、指针、数组和指针算术67
指针小结69
指针和字符串71
使用new创建动态结构73
预备知识
1、c++简介
c面向过程,c++面向对象。
2、程序创建技巧
编写源代码>
>
编译器(翻译)源代码>
生成目标代码>
将目标代码与其他代码链接>
生成执行代码.
3、源文件扩展名
开始学习c++
2、c++代码结构
c++.cpp这是个演示文件注译
#include<
iostream>
预处理器编译指令<
头文件>
usingnamespacestd指定命名空间std
intmain()函数头
{函数体开始用{
cout<
<
"
这是个演示文件"
;
函数体(cout输出语句)c++语句必须;
结尾
cout<
endl;
换行
return0;
结束main()函数的return语句
}
3、函数
main()是一个函数,示例中intmain()是一个函数头,函数头为函数和程序对其他部分之间的接口(自己理解为下面的函数体)做了总结,{包含的函数体表示计算机应该做什么指令,每一条指令为一个语句,每个语句都应由;
结尾。
main()函数最后一条语句“return0”叫做返回语句,叫做返回语句。
函数可被其他函数激活或调用,函数头描述了函数和调用它的函数之间的接口,位于函数前面的叫做函数返回类型(如intmain(),这里main()函数的返回类型是int(整型)),函数后面括号部分叫做形参列表或者叫参数列表。
C++程序必须包含一个名为main()的函数。
4、注译
c++注译以//打头//结尾,可以同代码同一行也可单独一行,也可用c语言注译/*开头*/结尾。
5、c++预处理器和iostream文件
#include预处理器,在主编译之前对源文件进行处理。
预处理操作,该指令将iostream头文件的内容添加到程序中,
iostream文件包含了输入和输出的定义,如cout输出cin输出都需要该文件定义。
6、头文件名
iostream叫做包含文件,也叫头文件,c++包含了很多这样的头文件,每个头文件支持一组特定的工具,在C语言中这样的头文件扩展名有.h,来自c语言的头文件在C++中最前面加c,如cmath。
7、名称空间
头文件不包含.h便可以使用命名空间,
usingnamespace叫做using编译指令,(暂时理解为存放组件的空间)
类、函数、变量是c++的标准组件,这些组件放置在std空间中,
因此使用usingnamespacestd指令,指令使得std空间的所有名称都可用。
!
也可省略using编译指令使用以下方式,如:
std:
:
字符串"
std:
8、cout进行c++输出
如cout<
内容"
双引号括起的是字符串,为将要显示的字符,
符号表示将字符串发送给cout,
cout是iostream预定义的一个对象,属性包括一个插入运算符,(语句理解为将<
右边的字符插入到输出流中。
)
小提示<
表示多种运算符,这里是运算符重载的一个例子。
9、控制符endl
endl是一个特殊的符号,表示重起一行,
如endl在cout中有特殊含义的称为控制符(在iostream文件中定义)
支持旧的C语言换行方法,如cout="
字符\n"
10、c++代码格式
1、在C++中分号;
标识了语句的结尾
2、可将几条代码放在一行,也可放在几行上。
C++语句
1、声明语句和变量
如intcarrots这条声明语句,这条语句指出程序需要组空的存储空间来存储一个整数,并给存储单元制定名称,在C++中int表示整数,编译器负责分配和标记内存细节。
该声明指出此后程序将使用carrots来表示存储在该内存单元中的值,carrots被称为变量,因为它的值可修改,
C++中所有变量都需声明
尽量在首次使用变量前声明。
2、赋值语句
赋值语句:
将值赋给存储单元,如:
carrots=25;
=叫做赋值运算符,可以连续使用改运算符,赋值自右到左进行,
允许对变量的值进行更改,如:
carrots=25-1;
3、cout的新用法
如cout=carrots;
没有双引号程序不会打印该字符carrots,
而是打印前面进行过赋值操作的
4、使用cin
例:
intX;
”这是个简单的X程序”;
cin>
X;
(如在这里输入12)
”X加上2等于多少”;
X=X+2;
Cout<
x+2等于<
X<
输出结果为:
这是个简单的X程序,X加上2等于多少,X加2等于14X.
cin可以理解为跟cout相反,作为输入流的一个对象,也可以接收通过键盘输入的字符。
5、使用cout拼接
可用格式:
”Nowyouhave”;
carrots;
”carrots”;
6、类简介
类是用户定义的一种数据类型,类相比对象就像类型相比变量,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。
举例来说类就像所有的著名演员,而对象就好比某个著名演员。
Intcarrots,这个代码创建一个类型为int的变量,corrots可以存储整数,可以加和减,来看cout,它是一个ostream类的对象,ostream类描述了它包含的对象表示的数据以及可以对他执行的所有操作,如cout将数字或字符插入到输出流中,另外的还有cin。
该类库是语言标准制定的类。
7、函数
C++函数分为两种:
有返回值和没有返回值
有返回值:
有返回值的函数将生成一个值,该值可以赋给变量或在其他表达式中使用,例如,标准库中含有一个sqrt()的函数,它返回平方根,加入要计算6.25的平方根并将这个值(返回值)赋给变量,则可以使用一下语句,
X=sqrt(6.25);
//计算6.25的平方根,并将值赋给变量x//
表达式sqrt(6.25)调用sqrt()函数,sqrt(6.25)称为函数函数调用,被调用的函数叫被调用函数sqrt(),包含函数调用的函数叫做调用函数,如前面声明的函数头intmain()。
参数是发送给函数的值,返回值是从函数中发送回去的值。
8、函数原型
在使用函数之前,编译器必须知道函数的参数类型和返回值类型,
C++使用的方式是使用函数原型语句。
C++中应为每个使用的函数提供原型。
函数原型就像使用变量必须变量声明---使用函数就必须提供函数原型(也可称为函数声明)
比如sqrt()函数在c++中定义为一个(可能)带小数部分的数字(如6.25)作为参数,并返回一个相同“类型”的数字,有些语言称这种数字为实数,c++称这种类型为double,那么sqrt()的原型就像这样:
doublesqrt(double);
第一个double意味着sqrt()返回一个double值,括号中的double意味着sqrt()需要一个double参数。
因此该原型对sqrt()函数的描述和下面代码使用的函数相同:
doublex;
//原型结尾有分好表明是一条语句,如果省略分好编译器就会把这行解释为函数头,并接着要求提供定义该函数的函数体。
X=sqrt(6.25)
在程序中使用sqrt()函数时,也必须提供函数原型,可用两种方法来实现。
1、在源代码中输入函数原型
2、在头文件(cmath)中定义函数原型
因有使用sqrt()函数因此这里输入定义函数原型头文件cmath
9、使用库函数
C++还允许创建变量时进行赋值,
如:
doublea=sqrt(b)这个过程叫做初始化。
10、函数变体
有些函数需要多项信息,这些函数使用多项参数,参数间用,号隔开,
例如数学函数pow()接受两项函数,返回值以第一个参数为底,第二个参数为幂,该函数的原型如下:
Doub=pow(double,double).
例如要计算5的8次方
Pw=pow(5.0,8.0);
另外有一些函数不接受任何参数,例如有一个c库
中包含一个rand()函数,该函数不接受任何参数,并返回一个随机整数,该函数的原型如下:
Intrand(void)
关键字void指出,该函数不接收任何参数,如果括号为空省略void,则c++解释为一个不接受任何参数的隐式声明。
可以这样使用该函数。
Myguess=rand();
c++中函数调用必须使用()号,即使没有参数。
还有一些函数,如编写了一个函数它按美元美分格式显示数字,当向他传递参数23.5时,它将在显示屏显示$23.50。
由于这个函数把值发送给了屏幕,而不是调用程序,因此它不需要返回值,
可以在原型中使用void来指定返回类型,以指出没有返回值。
Voidbucks(double);
不返回值的函数不能将该函数调用放在赋值语句或其他表达式中。
相反,应使用一条纯粹的函数调用语句
Bucks(1234.56);
11、用户定义的函数(此节在第7页有练习题)
添加另外一个用户定义的函数必须在使用之前提供其原型,但是必须提供新函数的源代码,这里放在main()函数后面。
(理解为调用simon必须提供simon函数源代码,例中第二个函数体。
程序清单中mian()函数调用了2次库函数simon(),一次的参数为3,一次的参数为变量count。
下面是程序2.5的运行情况。
12、函数格式
在2.5中函数simon()定义与main()函数定义相同,首先有个函数头,然后有花括号开始的函数体。
13、函数头
在上面2.5清单中,simon()函数的函数头如下
Voidsimon(intn)
开头的void表示simon()没有返回值,因此main()调用simon()不会生成可在main()中赋予变量的数字。
因此调用该函数应按如下方式:
Simon(3);
由于simon没有返回值,因此不能这样用它:
so=simon(3);
在以上实例中,voidsimon(intn)括号中的int表示使用该函数时应该提供一个int参数,n是一个新的变量,函数调用传递的值将赋予给它,如下面的函数调用将3赋予给simon()函数头中的变量n。
Simon(3);
当函数体中使用cout输出n时,将使用函数调用传递的值,因此2.5实例第一行输出为什么simon(3)显示3的原因。
Simon()的函数头已经说明,simon接收int参数,但不返回任何值。
14、复习intmain()函数头
Intmain()开头的int表明,main返回一个int值,函数后面的括号表明(可包含void),main()没有参数,对于有返回值的函数(main()有返回值,)应用关键字retuen来提供返回值,并结束函数,这就是为什么要在main()结尾使用return0;
语句的原因。
mian()函数的值并不返回给程序而是返回给操作系统,操作系统使用main()函数,之后的return0要求返回是0,如0表示程序运行成功,如是非0值表示程序不能正常运行。
15、关键字
在计算机语言中的词汇如:
void、double、int等等称为关键字,为c++语言中的专用词汇,这些关键字不能用作变量名,也不能用作函数名。
例外:
如cout在不使用输出操作的时候可以把它作为变量名,但不能在有输出的情况下当做变量名来使用
。
16、用户定义有返回值的函数
有返回值的函数练习题
//stone,将英石转换为磅.cpp
intstonetolb(int);
//提供函数stonetolb原型,返回值为int,参数值为int)
intstonetolb(intsts)//函数头,括号中的int表明,使用stonetolb时应提供一个int参数,sts是一个新的变量。
//函数调用时传递的值将被赋予给sts)上面stonetolb(stone)stone的值被赋予给sts
{
return14*sts;
//有返回值的函数,应用return来提供返回值,这里返回main()
}
intmain()//函数头,main()返回值为int
{
usingnamespacestd;
//使用命名空间std
intstone;
//变量声明
请输入一个整数,单位为“英石”"
//输出语句
stone;
//输入键击数据
intpounds=stonetolb(stone);
//调用stonetolb变量参数值为stone,返回值为整数赋予pounds(磅),这里
stone<
英石="
//输出
pounds<
磅."
//输出,换行
return0;
//执行结束返回0
//函数调用时传递的值:
函数被调用时赋予的值!
//有返回值的函数,应用return来提供返回值,main调用了该函数,这里返回给main()
没有返回值的练习题
void
simon(int);
//定义simon原型,参数为int,返回值为void
int
main()//函数声明
using
namespace
std;
simon(3);
//调用simon,参数值为3
pick
an
intrger:
count;
//定义变量count为整数
cin>
//输入键击数据,并赋予给count;
simon(count);
//再次调用simon
done"
//输出换行
return
0;
//因调用了simon函数,下面提供该函数的源代码
simon(int
n)//函数调用时传递的值赋予给"
n"
Simon
says
touch
your
toes
n<
times."
}
17、多函数程序中使用using指令
在上面的有返回值函数的例子中,两个函数程序都使用了using指令,这是因为都使用了cout,必须用到名称空间std的定义。
在以上实例中,可以用另一种方法让两个函数都能访问名称空间std,即将编译指令放在外面,且两个函数的前面。
让程序能够访问名称空间的方法,四种:
总结
1、C++程序由一个或多个被称为函数的模块组成
2、程序从main()函数开始执行,该函数必不可少
3、函数由函数头和函数体组成,函数头指出函数的返回值(如有)的类型和函数期望通过参数传递给它的信息的类型。
函数体由一系列位于花括号{中的c++语句组成,有多种类型的c++语句,包括以下六种:
⊙声明语句:
定义函数中使用的变量名称和类型
⊙赋值语句:
使用赋值运算符(=)给变量赋值
⊙消息语句:
将消息发送给对象,激发某种行动
⊙函数调用:
执行函数,被调用的函数执行完毕后,程序返回到函数调用语句后面的语句
⊙函数原型:
声明函数的返回类型、函数接收的参数数量和类型
⊙返回语句:
将一个值从被调用的函数哪里返回到调用函数中
◆类是用户定义的数据类型的规范,详细描述了如何表示星系以及可对数据执行的操作。
对象是根据类规范创建的实体,奖项简单变量是根据数据类型描述创建的实体一样。
◆c++可使用大量的c库函数,要使用库函数,应当包含提供该函数原型的头文件。
复习题
1.在c++程序的模块叫什么?
答:
函数
2.下面的于处理器编译指令是做什么的?
在编译之前,使用iostream文件替换编译指令
3.下面的语句是做什么用的?
usingnamespacestd;
使用std名称空间的名称定义
4.什么语句可以用来打印“Hello,world”然后开始新的一行
”Hello,word”<
5.什么语句可以用来创建名为cheeses的整数变量?
intcheeses;
6.什么语句可以用来将值32赋给变量cheeses?
cheeses=32;
7.什么语句可以用来将从键盘输入的值读入变量cheeses?
cheeses;
8.什么语句可以用来打印“WehaveXvarietiesofcheeses“其中X为变量cheeses的当前值?
”Wehave”<
cheeses<
”varietiesofcheeses”
9.下面的函数原型指出了关于函数的哪些信息?
intfroop(doublet)//调用froop函数时,应提供一个参数,该参数类型为double,返回值为int。
Voidrattle(intn)//调用rattle函数时应提供一个参数,参数类型为int,该函数不返回任何值.可以这样用他rattle(3);
Intprune(void)//该函数不接受任何参数,返回一个整数,例如可以这样用他
int函数名=prune();
10.定义函数时,什么情况下不必使用关键字return。
函数的返回类型为void的情况下,不必使用他,但如果不提供返回值,则可以用他return;
11.架设您编写的main()函数包含如下代码:
”请输入PIN码”;
而编译器指出cout是一个未知标识符,导致问题的原因可能是什么,指出3中修复这种问题的方法。
因为头文件没有包含ostream头文件,
修复方法:
1、在头文件加入#include<
2、
编程练习
编写一个c++程序,它显示您的姓名和地址
intmain()
我叫邹伟"
cout<
住在中国"
cin.get();
编写一个c++程序,它要求用户输入一个以long为单位的距离,然后将他转换为码,(一long等于220码).
intlongs;
intlonge;
请输入要转换的数值,按回车键确认:
longs;
longe=longs*220;
转换结果为"
longe<
码"
编写一个c++程序,它使用3个用户定义的函数(包括main()),并生成下面的输出
Threeblindmice
Seehowtheyrun
编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月。
如下所示
Enteryourage:
29
intage;
请输入您的年龄"
age;
age<
岁等于"
age=age*12;
月"
编写一个程序,其中的main()调用一个用户定义的函数(以摄氏度为参数,并返回相应的华氏度)该程序按下面的格式要求用户输入摄氏度值,并显示结果.
#inc