编程入门基础知识总结Word格式文档下载.docx
- 文档编号:17701703
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:7
- 大小:21.99KB
编程入门基础知识总结Word格式文档下载.docx
《编程入门基础知识总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《编程入门基础知识总结Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
1、保证变量名使用的正确,不正确会在编译时报错
2、每个变量指定为一确定类型,在编译时就能为其分配存储单元
3、编译时即可检查变量进行的运算是否合法。
3、运算符二进制位运算&
二进制按位与|二进制按位或^按位异或<
<
左移位>
>
右移位++自加自减运算符++i使用i之前,i先自加i++使用i之后,i再自加++结合方向为自右向左例:
!
x++先取非,再++(i++)+6先i+6,后i++,不管有无括号,都是先运算,再自加(++i)+6先自加,再加6-i++:
i左面是符号运算符,右面是自加运算符,设i等于3,运算过程相当于i=-32a=3,先赋值,再自加;
5-i++=?
答案2?
待测试i=1,j=2,则a=i+++j?
答案:
3因为相当于a=(i++)+j;
i=1,j=2,则a=i+(++j)?
4赋值运算符=的优先级小于++运算符示例:
intarr[]={6,7,8,9,10};
sint*ptr=arr;
*(ptr++)
+=123;
printf("
%d,%d"
*ptr,*(++ptr));
解:
*(ptr++)
相当于*ptr+=123;
*ptr++;
故arr[0]=129;
ptr指向arr[1]printf函数从右向左压栈,运算顺序:
++ptr;
输出结果:
88cout也是自右向左压栈。
逗号运算符又称顺序求值运算符a=3*4,a*5则a=?
答案12?
注意逗号运算符优先级最低。
注:
整个逗号表达式的值为60(a=3*4=12,12*5=60)x=(a=3,6*3)
则x=18x=a=3,6*a则x=
33、内存存储浮点数在内存里和整数存储方式不同floata=
1、0f;
cout<
(int)a==(int&
a);
(int&
a)
相当于把该浮点数地址开始的sizeof(int)个字节当成int型数据输出,其值并不为1(int)a显示转换等于
14、类型转换转换本质:
按存储单元中的存储形式直接传送
(1)浮点型赋给整型,舍弃小数部分
(2)double型赋给float,防止溢出错误(3)int,short,long赋给char,原封不动取低八位(4)signed赋给unsigned,符号位照搬。
负数以补码形式存放,-1赋给unsignedint,结果为655
36、整数不会变,除非两个长度不同(int,long)发生截断
5、C++输入输出C++输入输出包含三个方面的内容
(1)对系统指定的标准设备的输入输出。
即从键盘输入、输出到显示器屏幕,称标准输入输出,简称标准I/O
(2)以外出磁盘文件为对象进行输入输出,称文件I/O(3)对内存中指定空间进行输入输出,通常指定一个字符数组作为存储空间,称字符串输入输出,简称串I/O在C++中,输入输出流被定义为类。
C++的I/O库中的类称为流类,用流类定义的对象称流对象。
C++中输入输出是调用输入输出流库中的流对象cin、cout实现的,即I/O不是C++本身定义的,而是编译系统的I/O库中定义的。
I/O控制符#include<
iomanip>
setprecision(n)
设置精度为n,进制输出时,n代表有效数字位数包括整数和小数;
fixed(固定小数位数)和scientific(指数)形式输出时,n指小数位数(不包括整数部分)doublea=1
23、56cout<
a;
//进制输出,输出1
23、456默认精度为6cout<
setprecision(9)<
a;
//进制,输出1
23、精度为9cout<
setprecision(6);
//恢复默认精度cout<
setioflags(iOS:
:
fixed)<
//固定位数,1
23、,此时精度表示小数位数,精度为默认的
66、getchar()
和putchar()cout<
getchar();
//读入的实际是ASCII码,故输出为字符ASCII码,97,而非读入的字符cout<
(c=getchar());
//输出为字符while((c=getchar())!
=\n){}//循环读入字符的控制
7、函数与模版函数原型:
不同具体形参的函数声明如:
floatadd(float,float)主要作用:
根据函数原型,在程序编译阶段对调用函数的合法性进行全面检查。
函数重载:
同一函数名定义的多个函数,这些函数的参数个数,参数类型,参数顺序至少有一项不同,一个函数不能既是重载函数,又是带默认参数的函数。
函数模版:
适用于函数个数相同,函数体相同,而只有类型不同的情况[cpp]viewplaincopy01、#include<
iostream>
02、usingnamespacestd;
03、template<
typenameT>
//template<
classT>
04、Tmax(Ta,Tb,Tc)
05、{06、if(b>
a=b;
07、if(c>
a=c;
08、returna;
09、}
10、intmain()
11、{
12、inta=1,b=2,c=3;
13、cout<
T(a,b,c);
14、floatd=
1、1,e=
2、2,f=
3、3;
15、cout<
T(d,e,f);
16、}变量作用域:
变量有效范围,有四种:
文件作用域filescope函数作用域functionscope块作用域blockscope函数原型作用域functionprototypescope递归函数:
函数体中,直接或间接调用函数本身的函数。
变量的存储类别:
外部、局部(相对于函数而言)全局变量(也即外部变量)静态局部变量(static)自动变量(不加static的局部变量)寄存器变量(register)存放在CPU中,而非内存中,这样在使用时就省去了从内存中载入寄存器的过程。
但只是建议性的,优化编译系统自动识别使用频繁的变量,从而自动将变量放入寄存器中。
extern声明的外部变量即提前引用申明,表示该变量是将在下面定义的全局变量或在其它文件中定义(本文件中不用extern,引用该变量的外部文件用extern进行声明)static声明的静态外部变量只能被本文件使用,而不能被外部文件使用的全局变量,这样不同文件中的全局变量不会相互干扰,为程序模块化、通用化提供方便。
全局变量也是静态存储的。
内部函数与外部函数内部函数:
static声明,文件内使用外部函数:
另一个文件里extern声明,表示是其它文件的函数,extern可以省略宏定义#definePI
3、14定义符号常量#defineArea(a,b)
a*b//定义函数功能,下面当作函数来用。
#include<
iostream区别<
在系统目录寻找,找不到报错在当前目录寻找,找不到报错字符数组
(1)
charstr[]="
iamhappy"
;
数组长度为11,而非10,因为后面有一个\0
(2)
charstr[]={i,a,m,h,y}数组长度为5,系统不会自动为其在后面加\0因此,
(1),
(2)是不同的输出字符数组:
str;
string类字符数组是C中的处理方式,C++中用string类,#include<
string>
字符串变量中不会存放\0,只存放字符串本身,故stringstr="
hello"
的长度为5,要注意。
字符串变量存储的实际是字符串的指针,4个字节,sizeof(string)
=4;
stringname[]={"
i"
"
am"
happy"
};
sizeof(name)
=3*4=12;
变量与指针:
int*p=&
i;
//int型指针变量,定义时的*只是表示指针类型p是指针变量,其值是变量i的地址,*p则是存储单元,*&
a与*p同,都表示变量a指向数组的指针inta[10]={};
int*p;
p=&
a[0];
//与下面等价,都指向数组第一个元素,因为数组名本身就是表示数组的地址p=a;
**************************p++相当于*(p++),先得到*p的值,p再++移到下一个元素(*p)++则是使*p的值+1二维数组的指针表示:
*(*(p+i)+j)
表示a[i,j]*************************int(*p)[n]p为指向含n个元素的数组的指针int*p[n]定义指针数组P函数指针指向函数的指针,主要用作形参intmax(int,int);
int(*p)(int,int);
p=max;
赋值(地址)p(1,2)
//调用引用inta=10;
int&
b=a;
b是对a的引用引用传递,引用型变量作为函数形参[cpp]viewplaincopy01、//值会改变02、main{03、inti=5,j=6;
04、swap(i,j)
05、}06、voidswap(int&
a,int&
b)
//这里的&
不是“a的地址”,而是指“a是一个引用型变量”,&
是个声明符07、{08、inttemp;
09、temp=a;
10、a=b;
1
1、b=temp;
12、}传递变量地址:
形参是指针变量,实参是变量地址,这种虚实结合的方法仍然是“值传递”方式,只是实参的值是变量地址而已。
[cpp]viewplaincopy01、//值会改变02、main()
03、{04、inti=5,j=6;
05、swap(&
i,&
j)
06、}07、voidswap(int*p1,int*p2)
//这里的*号也只表示是指针类型08、{09、inttemp;
10、temp=*p1;
1、*p1=*p2;
12、*p2=temp;
13、}结构体变量struct作函数参数时有三种形式
(1)用结构体变量名作形参这时形参要开辟内存单元,实参中全部内容通过值传递方式一一传递给形参,时空开销大,效率低
(2)用指向结构体变量的指针作形参,只有四个字节voidprinted(student*p){cout<
p->
num;
}(3)用结构体变量的引用变量作形参Studentstu;
print(stu);
voidprint(Student&
stu){cout<
stu、num;
}newdelete动态内存分配new类型(初值),返回地址,分配失败返回NULLfloat*f=newfloat(
3、14);
int*i=newint(6);
int*k=newint[5][4];
//数组delete变量deletef;
deletei;
数组delete
[]k;
Enum枚举类型声明枚举类型enumweekday{sun,mon,tue,wed,thu,fri,sat};
定义枚举变量weekdayworkday,week_end;
变量赋值:
workday=mon;
或workday=weekday
(2);
枚举常量对应值从0开始,0,1,2,
3、、typedef声明新类型typedefintINTEGER,相当于为int起了个别名,下面程序中就可以直接用INTEGER作int用了主要为了方便系统移植,如longint在VC中4个字节,在GCC中占8个字节,直接用int的话可能会溢出,用INTEGER就不用担心了,只要把ypedefintINTEGER声明语句一改就行运算符重载方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现响应运算。
即运算符重载是通过定义函数实现的,运算符重载实际上是函数重载。
格式:
函数类型operator运算符名称(形参表列){对运算符的重载处理}例如:
将+用于Complex类(复数)的加法运算,函数原型如下:
Complexoperator+(Complex&
c1,Complex&
c2);
operator是关键字,operator+就是函数名,可以描述为:
函数operator+重载了运算符+整数加可以想象为调用如下函数intoperator+(inta,intb){returna+b;
}[cpp]viewplaincopy01、#include<
03、classComplex04、{05、public:
06、Complex(){real=0;
imag=0;
}07、Complex(doubler,doubler){real=r;
imag=i;
}08、Complexoperator+(Complex&
c2);
//声明重载运算符的函数09、voiddisplay();
10、private:
1、doublerea;
12、doubleimag;
13、};
14、ComplexComplex:
operator+(Complex&
c2)
//定义重载运算符的函数
15、{
16、Complexc;
17、c、real=real+c
2、real;
18、c、imag=imag+c
2、imag;
19、returnc;
20、}
21、voidComplex:
display()
22、{
23、cout<
real<
imag;
24、}
25、intmain()
26、{
27、Complexc1(3,4),c2(5,-10),c3;
28、c3=c1+c2;
//运算符+用于复数运算
29、cout<
"
c1="
c
1、display;
30、cout<
c2="
2、display;
3
1、cout<
c1+c2="
3、display;
32、return0;
33、}
34、运行结果:
35、c1=(3,4i)
36、c2=(5,-10i)
37、c1+c2=(8,-6i)
重载运算符的规则
(1)C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。
(2)C++允许重载绝大部分的运算符(3)重载不能改变运算符运算对象的个数(4)重载不能改变运算符的优先级别(5)重载不能改变运算符的结合性(6)重载运算符的函数不能有默认的参数(7)重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少一个是类对象(或类对象的引用)。
也就是说参数不能全部是C++的标准类型,以防止用户修改用于标准类型数据的运算符的性质。
(8)用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&
”不必用户重载(9)应当使重载运算符的功能类似于该运算符作用于标准类型数据时所实现的功能,否则不易使人理解程序(10)运算符重载函数可以是类的成员函数,也可以是类的友元函数,还是计费成员函数也非友元函数的普通函数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 入门 基础知识 总结