C++笔记Word文件下载.docx
- 文档编号:17096915
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:95.28KB
C++笔记Word文件下载.docx
《C++笔记Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++笔记Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
0x0D
回车
\\
0x5C
反斜杠字符“\”
\"
0x22
双引号
\'
0x27
单引号
\ddd
1~3位八进制数
\xhh
1~2位十六进制数
字符串由一对双引号括起来的字符序列以(“\0”结束),为字符指针类型。
C++提供的有关字符串的函数库<
string.h>
运算符
分类:
单目运算符
操作数的个数双目运算符
三目运算符
算数运算符:
+-*/%++--
关系运算符:
==!
=<
<
=>
>
=
逻辑运算符:
!
&
&
||
功能位运算符:
~(取反)&
(逐位与)|(逐位或)^(逐位异或)
<
(逐位左移)>
(逐位右移)
简单
赋值运算符
复合的赋值运算符(亦称赋值缩写)+=-=*=
/=%=&
=|=^=<
=
在逻辑运算中,并不是所有的逻辑运算符都被执行,只有在执行下一个运算符后才能得出表达式的值时,才执行该运算符。
(如:
a&
b&
c;
当a为真时,才依次判断b和c。
)
位运算是指按二进制进行的运算。
只能用于整型操作数,即带符号或无符号的char,short,
int,long类型。
sizeof求字节数运算符,运算结果与不同的编译器和机器相关。
条件运算符操作数1(表达式)?
操作数2:
操作数3;
量
变量命名
1.变量名里的字符必须为字母、数字、下划线
2.首字符必须为字母或下划线
3.避免使用关键字(保留字)
字面量(常量)常数或代表固定不变值(字面量)的名字
①直接常量
整型数,即整型字面量。
进制
表示
输出控制符
Binary
Octal
0123or(123)8
oct
decimal
dec
Hexadecimal
0X12aor0x12Aor(12a)16
hex
实型数,即实型字面量(浮点数)
小数必须有小数点,如0.123,.23,0.0。
指数123e5或123E5(整数)
②符号常量
const数据类型常量名=常量值
预定义符号(如#definePI3.1415926)
变量初始化
inta=100;
等价于inta(100);
inta=0;
等价于inta=int();
//使用构造函数进行初始化
void类型基本的数据类型
void指针/函数
枚举符
enumCOLOR{red,blue,black}
定义了一个枚举类型后,可以定义该枚举类型的变量。
(变量的取值只能取枚举类型定义时规定的值)
类型转换
①显示(强制)类型转换
(类型名)数值或类型名(数值)
②隐式类型转换
数组
数据类型数组名[常量表达式可包含枚举常量和字符常量]
数组名与指针可相互替换
inti;
chara[10];
char*p=a;
//等价于cahr*p=&
a[0]
数组元素的表示有三种:
a[i]、*(p+i)、*(a+i)
数组元素的地址表示有四种:
a[i]、a+i、p+i、&
p[i]
字符数组的初始化:
chara[20]={"
hello"
};
//字符数组的初始化
charb[20]={'
h'
'
e'
l'
o'
\0'
charc[20]="
chard[]="
//省略数组大小只能在初始化的数组中定义
chara[20];
a={"
//error
向函数传递数组,无论何时,实际上只是把数组的地址传给函数。
即在栈上定义了指针,可以对该指针进行递增递减操作。
指针(用来操作地址的特殊类型变量)
指针是变量,与其他基本数据类型一样,凡可以声明变量的地方,就可以声明指针变量。
void指针(空类型指针)
仅仅为一个地址,空类型不能进行指针运算,也不能进行间接引用。
字符指针
字符串的类型是指向字符的指针,与字符数组名、字符指针同属于一种类型
Heap
data
Stack
Const
Common
Data
Code
指针函数(返回指针的函数)
指针函数不能把在它内容说明的具有局部作用域的数据地址作为返回值。
可以返回堆地址,可以返回全局或静态变量的地址。
函数指针(指向函数地址的指针)
指针类型(*函数名)(参数表)
可将省略了()函数名作为函数地址赋给函数指针
int*fn(charx,,chary);
//两个字符参数和返回整型指针的函数
int(*fn)(charx,,chary);
//两个字符参数和返回整形值的函数指针
指向常量的指针常量(常量指针常量)
constinta=7;
intb=8;
constint*constA=&
a;
constint*constB=&
b;
b=10;
//error:
不能通过指针来修改变量的值
cout<
*A<
"
*B<
endl;
引用(即别名)
声明时必须被初始化,C++未提供访问引用本身地址的方法,因为引用与指针或其他变量的地址不同,它没有任何意义。
函数返回值时,要生成一个值的副本。
而用引用返回值时,不生成值的副本。
引用本身不是一种数据类型,所以没有引用的引用,也没有引用的指针。
存储类型说明符—auto、register、static、extern
auto(通常缺省)—自动变量生于块的执行,死于块的结束
register说明为寄存器变量
函数
若被调用函数的定义在主调函数之后,则需要首先对被调函数进行说明。
一般形式:
返回值类型函数名(参数表);
一个函数体中可以包含另一个函数的说明,但不能包含另一个函数的定义。
结构
声明、定义、访问
//通常情况下,结构声明在所有函数之外,位于main()函数之前
#include<
iostream.h>
structWeather//名为Weather的结构声明(声明一个结构并不分配内存)
doubletemp;
doublewind;
char*fengxiang;
//结构分量(成员)
//分号是必需的
voidmain()
Weathertoday;
//定义一个Weather结构变量,并分配变量空间
today.temp=30.5;
today.wind=10.1;
today.fengxiang="
north"
//作为左值使用,today.temp中的“.”称为点操作符(或称为结构成员操作符)①
Weathertomorrow={32,8.3,"
west"
//定义并初始化②
Weatheryesterday;
yesterday=today;
//结构变量的赋值③
今天的天气:
Temp="
today.temp<
//作为右值使用
Wind="
today.wind<
fengxiang:
today.fengxiang<
endl<
昨天的天气与今天相同!
昨天的天气:
yesterday.temp<
yesterday.wind<
yesterday.fengxiang<
明天的天气:
tomorrow.temp<
tomorrow.wind<
tomorrow.fengxiang<
}
//①②③为三种结构赋值的方法
结构数组
structPerson
charname[20];
unsignedlongid;
floatsalary;
Personallone[6]={{"
jone"
12345,339.0},
{"
david"
13916,449.0},
marit"
27519,311.0},
jasen"
42876,623.0},
peter"
23987,400.0},
yoke"
12335,511.0}};
//定义一个结构数组并初始化,每个结构变量是该数组的元素
voidmain()//冒泡法对一个Person结构数组排序
Persontemp;
for(inti=1;
i<
6;
i++){//排序
for(intj=0;
j<
=5-i;
j++)//一轮比较
if(allone[j].salary>
allone[j+1].salary){//比较工资成员
temp=allone[j];
//结构变量的交换
allone[j]=allone[j+1];
allone[j+1]=temp;
}
for(intk=0;
k<
k++)//输出
cout<
allone[k].name<
allone[k].id<
allone[k].salary<
结构指针
Personpr1;
Person*prPtr;
//定义一个结构指针
prPtr=&
pr1;
//将Person结构的结构变量pr1的地址赋给结构指针prPtr
strcpy(prPtr->
name,"
DavidMarat"
);
prPtr->
id=987654321;
//使用“->
”对成员进行操作,“->
”的左边应是个结构指针
salary=335.0;
//等价于pr1.salary=335.0或(*prPtr).salary=335.0
prPtr->
name<
id<
salary<
利用指针对结构数组进行操作
Person*pA[6]={&
allone[0],&
allone[1],&
allone[2],
allone[3],&
allone[4],&
allone[5]};
//定义一个指针数组
Person*temp;
i++)//for(inti=0;
5;
i++)另一种结果
j++)
if(pA[j]->
salary>
pA[j+1]->
salary)//比较工资成员
{
temp=pA[j];
pA[j]=pA[j+1];
pA[j+1]=temp;
k++)
pA[k]->
name<
id<
salary<
math.h
doublesin(doublex)doubleexp(doublex)
doublepow(doublex,doubley)doublesqrt(doublex)
分配空间时不能调用构造函数
alloc函数
//函数free()返回由malloc函数分配的堆内存函数原型为voidfree(void*)
alloc.h>
//malloc()函数并不知道用这些内存干什么,所以它返回一个没有类型的指针。
//但对整数指针array来说,malloc()
intarraysize;
//元素个数
int*array;
pleaseinputanumberofarray:
\n"
cin>
arraysize;
if((array=(int*)malloc(arraysize*sizeof(int)))==NULL)
{
can'
tallocatemorememory,terminating.\n"
return;
for(intcount=0;
count<
count++)
array[count]=count*2;
array[count]<
free(array);
//释放堆内存
new_delete.cpp
//堆——可以按要求进行分配的资源或内存池
//newdelete
//new的操作数为数据类型,可以带初始化值表示单元个数
//delete返回一个具有操作数之数据类型的指针
#include<
intlen;
int*ar;
pleaseinputannumberofar'
selements:
cin>
len;
if((ar=newint[len])==NULL)
cout<
堆内存不足,请停止操作,关闭该程序!
!
请输入ar[len-1]的值"
ar[len-1];
ar[len-1]="
insertsort。
cpp
inti,j;
chara[11],temp;
//a[]为11
请输入一个长度为10的字符串:
cin.get(a,11);
for(i=1;
i<
=9;
i++)
for(j=0;
j<
i;
j++)
{
if(a[j]>
a[i])
{
temp=a[i];
for(intk=i-1;
k>
=j;
k--)
a[k+1]=a[k];
a[j]=temp;
}
}
a<
默认参数的函数
voiddelay(intloops=1000);
//只可在函数声明里给默认参数赋值
voido(inta=1000)
//此情况亦可给默认参数赋值
delay();
delay(2500);
o();
o(2500);
voiddelay(intloops)
loops<
}
voidfunc(inta,intb=100,intc=200,intd=300)
a="
endl
<
b="
b<
c="
c<
d="
d<
func
(1);
//func();
error参数a没有默认值
func(1,2);
//func(1,,3,4)error只能从右到左顺序匹配默认
func(1,2,3);
func(1,2,3,4);
内联函数(内嵌函数)
用表达式替换函数调用,免去了大量函数调用的开销
格式:
inlineintIsNumber(char);
inlineintIsNumber(charc)
return(c>
=’0’&
=’9’?
1:
0;
原理:
编译器看到inline后,为该函数创建一段代码,以便在后面每次调用该函数时,都用相同的一段代码来代换。
必须在被调用之前声明或定义。
控制浮点显示值.cpp
//提供基本的输入输出功能
iomanip.h>
//要用到格式控制符,提供格式化功能
doubleamount=22.0/7;
//流的有效位数默认设置为6位
amount<
setprecision(0)<
setprecision
(1)<
setprecision
(2)<
setprecision(3)<
setprecision(4)<
//setprecision(n)可控制输出流显示浮点数的数字个数
setiosflags(ios:
:
fixed);
setprecision(8)
//setiosflags(ios:
fixed)与setprecision(n)可控制小数点右边的数字个数
scientific)
//保留setiosflags(ios:
fixed)与setprecision(n)的效力
setprecision(6);
//重新设置成原默认设置
强制显示小数点和符号.cpp
10.0/5<
showpoint)
10<
-20<
showpos)
设置输出宽度与填充字符.cpp
setw(4)<
21<
setfill('
*'
setw
(2)<
21<
setw(3)<
setw(4)<
'
//恢复默认设置
输出八、十、十六进制数.cpp
intnumber=1001;
Decimal:
dec<
number<
Hexadecimal:
hex<
Octal:
oct<
左右对其输出.cpp
right)
setw(5)<
1
2
3<
left)//保馈_存?
其?
效§
力
类(封装的基本单元)
面向对象程序设计的两大原则:
抽象&
分类(将概念逐渐细化、具体化)
面向对象的编程思想:
抽象一个个具有数据属性和动作的实体
面向对象应用程序设计
面向对象程序设计中分工明确的两种编程
类库设计
:
作用域说明符
没有类名的函数也成为非成员函数
可以不跟类名,表示全局数据或全局函数(即非成员函数)
可以使用指针、引用传递来访问类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 笔记