编程入门基础知识总结_第1页
编程入门基础知识总结_第2页
编程入门基础知识总结_第3页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编程入门基础知识总结编程入门基础知识总结基本知识程序=算法+数据结构,算法是对操作的描 述,数据结构是对数据的描述。伪代码:pseudo code程序一般包括:(1)预处理命令:#include等(2)全局声明部分(3)函数:函数首部(声明)、函数体(局部声 明+执行部分)程序执行过程源程序-> 编译成目标程序obj->连接目标程序成可执行文件类:数据成员+成员函数命名空间实际上就是一个由程序设计者命名的内存区域。 程序员可以根据需要指定一些有名字的空间域, 把一些全局实体分别放在各个命名空间中,从而与其它全局实体分隔开,解决名字冲突,防止全 局命名空间污染。C+库的所有标识符(标

2、准头文件中函数、类、 对象、类模版)都是在Std命名空间定义的的ASCII码值65a的971. 数据类型基本类型:整型、浮点型、字符型、布尔型 构造类型:枚举、数组、结构体类型(struct)、 公用体(union)类类型 指针类型引用类型空类型:nullint 4unsigned int 4long int 4unsigned long int 4char 1uchar 1float 4double 8long double8short int 2unsigned short int 2无符号:不用保存符号位,故比有符号多了一位 有符号:数值用补码存放(无论正负),最高位为 符号位VC中,l

3、ong double 与double字节数相同,故 long double 是无用的GCC中, long double 则有 12 个字节无负值的量可以定义为unsig ned int ,如年龄、 学号等,以增大存储范围。short int , long int , unsigned int 这些类型后面的int可以省略整型表示:十进制,后面加L或I八进制,前面加0十六进制,前面加Ox浮点数表示:默认为双精度型double后面加f或F则为单精度float后面加I或L则为长精度型long double指数形式数符数字部分指数部分a =3.14e2a=0.314e4a=31.4e1a=3140e-

4、1浮点数,不管是用小数形式还是指数形式表示, 在内存中都是以指数形式表示的,且数字部分必 须小于1如3.14159 在内存中表示为 + .3141593,数字部分为.314159,是小于1的字符型字符型在内存中存储的是 ASCII码,也是整型, 故而可以把字符型赋给整型字符串后面,编译系统会加个'0'作为结束符符号常量用符号代表一个常量,如#defi nePI3.14159在编译时,系统会把符号常量替换成具体的值2. 变量变量:程序运行期间,值可变的量变量名:代表内存中的一个存储单元,在编译连 接时由系统给每一个变量分配一个地址标识符:标识实体名字的有效字符序列,字母、 数字、

5、下划线常变量:定义变量时加上con st,运行期间值不 可变,也即只读变量区别#defi ne定义的符号常量与 con st定义的 常变量符号常量只是用一个符号代表一个常量,在编译 时把所有符号常量替换为指定的值,它没有类 型,在内存中不存在以符号常量命名的存储单元 常变量具有变量的特征,具有类型,在内存中有 以它命名的存储单元,与一般变量不同的是,常 变量代表的存储单元值不可变。强定义的好处1. 保证变量名使用的正确,不正确会在编译时报 错2. 每个变量指定为一确定类型,在编译时就能为 其分配存储单元3. 编译时即可检查变量进行的运算是否合法。3. 运算符二进制位运算&二进制按位与|

6、二进制按位或人按位异或<<左移位>>右移位+ -自加自减运算符+i使用i之前,i先自加i+ 使用i之后,i再自加+ - 结合方向为自右向左例:!x+ 先取非,再+(i+)+6 先i+6,后i+,不管有无括号,都是先运算,再自加(+i)+6 先自加,再加6-i+: i左面是符号运算符,右面是自加运算符,设i等于3,运算过程相当于-(i+),即-i=-3 -3+仁-2a = -i+ : a结果为-3,先赋值,再自加;5-i+ = ? 答案2?待测试i=1,j=2,贝V a = i+j? 答案:3 因为相当于 a=(i+)+j;i=1,j=2,则 a=i+(+j) ? 答案:

7、4赋值运算符=的优先级小于+ -运算符示例:int arr = 6,7,8,9,10;sint *ptr = arr;*(ptr+) += 123;prin tf("%d,%d",*ptr,*(+ptr);解:*(ptr+)+= 123; 相当于 *ptr +=123;*ptr+; 故 arr0 = 129; ptr 指向 arr1printf函数从右向左压栈,运算顺序:+ptr;输出结果:8 8cout也是自右向左压栈。逗号运算符又称顺序求值运算符a = 3*4,a*5 则a=?答案12 ? 注意逗号 运算符优先级最低。注:整个逗号表达式的值为 60( a=3*4=12,

8、12*5 =60)x=(a=3,6*3)则 x=18x=a=3,6*a则 x=33.内存存储浮点数在内存里和整数存储方式不同float a =1.0f;cout<v(i nt)a=(i nt&a);(int&a) 相当于把该浮点数地址开始的 sizeof(int) 个字节当成int型数据输出,其值 并不为1(in t)a显示转换等于14. 类型转换转换本质:按存储单元中的存储形式直接传送(1) 浮点型赋给整型,舍弃小数部分(2) double型赋给float,防止溢出错误(3) int , short , Io ng 赋给 char,原圭寸不动 取低八位(4) signe

9、d赋给unsigned,符号位照搬。负数 以补码形式存放,-1赋给unsigned int ,结果 为65536.整数不会变,除非两个长度不同(int , long )发生截断5. C+输入输出C+俞入输出包含三个方面的内容(1)对系统指定的标准设备的输入输出。即从 键盘输入、输出到显示器屏幕,称标准输入输出, 简称标准I/O(2)以外出磁盘文件为对象进行输入输出,称 文件I/O(3)对内存中指定空间进行输入输出,通常指 定一个字符数组作为存储空间,称字符串输入输 出,简称串I/O在C+中,输入输出流被定义为类。C+啲I/O 库中的类称为流类,用流类定义的对象称流对 象。C+中输入输出是调用输

10、入输出流库中的流对象 cin、cout实现的,即I/O不是C+本身定义的,而是编译系统的I/O库中定义的I/O 控制符 #include <iomanip>setprecision(n) 设置精度为 n,十进制输出时,n代表有效数字位数包括整数和 小数;fixed (固定小数位数)和scie ntific (指数)形式输出时,n指小数位数(不包括整数部分)double a = 123.4567890123456cout << a; /十进制输出,输出123.456默认精度为6十进制,输cout«setprecisi on( 9)<<a;/出123.

11、456789 精度为9cout«setprecisio n(6);/恢复默认精coutv<setioflags(iOS:fixed)v<a;/ 固定位数,123.456789,此时精度表示小数位数, 精度为默认的66. getchar() 和 putchar()cout«getchar(); / 读入的实际是 ASCII 码,故输出为字符ASCII码,97,而非读入的字 符cout«(c=getchar(); /输出为字符循环读while(c=getchar()!='n') /入字符的控制7. 函数与模版函数原型:不同具体形参的函数声明

12、如:float add(float,float) 主要作用:根据函数原型,在程序编译阶段对调 用函数的合法性进行全面检查。函数重载:同一函数名定义的多个函数,这些函 数的参数个数,参数类型,参数顺序至少有一项 不同,一个函数不能既是重载函数,又是带默认 参数的函数。函数模版:适用于函数个数相同,函数体相同, 而只有类型不同的情况cpp view pla in copy01.# in elude <iostream> 02.us ing n amespace std;vclassO3.template vtypename T> / templateT>04.T max(T

13、 a, T b, T c)O5.06.if(b>a) a = b;07.if(c>a) a = c;08. return a;09.10.i nt mai n()11. 12. int a=1,b=2,c=3;13. cout<<T(a,b,c);14. float d=1.1,e=2.2,f=3.3;15. cout<< T(d,e,f);变量作用域:变量有效范围,有四种:文件作用域file scope 函数作用域fun cti on scope块作用域block scope 函数原型作用域 fun cti on prototype scope递归函数:函

14、数体中,直接或间接调用函数本身 的函数。变量的存储类别:外部、局部(相对于函数而言)全局变量(也即外部变量)静态局部变量(static )自动变量(不加static 的局部变量)寄存器变量(register ) 存放在CPU中,而非 内存中,这样在使用时就省去了从内存中载入寄 存器的过程。但只是建议性的,优化编译系统自 动识别使用频繁的变量,从而自动将变量放入寄 存器中。extern声明的外部变量即提前引用申明,表示该变量是将在下面定义的 全局变量或在其它文件中定义(本文件中不用 extern,引用该变量的外部文件用extern进行声明)static声明的静态外部变量只能被本文件使用,而不能被

15、外部文件使用的全 局变量,这样不同文件中的全局变量不会相互干 扰,为程序模块化、通用化提供方便。注:全局变量也是静态存储的。内部函数与外部函数内部函数:static 声明,文件内使用外部函数:另一个文件里 extern声明,表示是 其它文件的函数,extern可以省略宏定义#defi ne PI 3.14定义符号常量区别a*b#defi neArea(a,b)/定义函数功能,下面当作函数来用#in elude <iostream> 'iostream'<>在系统目录寻找,找不到报错''在当前目录寻找,找不到报错字符数组 char str

16、= "i am happy"数组长度为11,而非10,因为后面有一个'0'(2) char str = 'i','a','m','h','y'数组长度为5,系统不会自动为其在后面加0'因此,(1),(2)是不同的输出字符数组:cout«str;stri ng 类字符数组是C中的处理方式,C+中用string类,#in clude <stri ng>字符串变量中不会存放'0',只存放字符串本 身,故string str ="h

17、ello"的长度为5,要字符串变量存储的实际是字符串的指针,4个字 节,sizeof(stri ng) = 4;stri ngn ame二"i","am","happy"sizeof( name) = 3*4 = 12;变量与指针:int *p = &i;int的*只是表示指针类型型指针变量,定义时p是指针变量,其值是变量i的地址,*p则是存 储单元,*&a与*p同,都表示变量a指向数组的指针int a10 = ;int *p;p = & a0; /与下面等价,都指向数组第一个元素,因为数组名本身就是

18、表示数组的地址p = a;*p+相当于*(p+),先得到*p的值,到下一个元素(*p)+则是使*p的值+1二维数组的指针表示:*(*(p+i)+j)ai,jp 再+移表示*int (*p) n p为指向含n个元素的数组的指int *pn定义指针数组P函数指针 指向函数的指针,主要用作形参 int max(i nt,i nt);in t (*p)(i nt,i nt);p = max; 赋值(地址)p(1,2) / 调用引用int a = 10;int &b = a; b 是对a的引用引用传递,引用型变量作为函数形参cpp view pla in copy01./值会改变02.ma in

19、03. int i=5,j=6;04. swap(i,j)05.O6.void swap(int &a, int &b) /这里的 &不是“a的地址”,而是指“ a是一个引用型变量”, &是个声明符07.08.int temp;09.temp = a;10.a= b;11.b=temp;12.传递变量地址:形参是指针变量,实参是变量地 址,这种虚实结合的方法仍然是“值传递”方式, 只是实参的值是变量地址而已。cpp view pla in copy01./值会改变02.mai n()03.04. int i=5,j=6;05. swap(&i,&

20、j)06.O7.void swap(int *p1, int *p2) /这里的 *号也只表示是指针类型08.09. int temp;10. temp = *p1;11. *p1 = *p2;12. *p2 = temp;13. 结构体变量struct作函数参数时有三种形式(1) 用结构体变量名作形参这时形参要开辟内存单元,实参中全部内容通过 值传递方式一一传递给形参,时空开销大,效率 低(2) 用指向结构体变量的指针作形参,只有四 个字节void prin ted( stude nt *p)coutvvp->n um;(3) 用结构体变量的引用变量作形参Stude nt stu;pr

21、in t(stu);void print(Student &stu)coutvstu .num;new delete 动态内存分配new类型(初值),返回地址,分配失败返回NULL float *f = new float(3.14);int *i = new in t(6);int *k = new in t54; /数组delete 变量 delete f; delete i;数组 delete k;En um枚举类型声 明 枚 举 类 型enumweekdays un ,mo n,tue,wed,thu,fri,sat;定义枚举变量 weekday workday,week_e

22、nd;变量赋值: workday = mon; 或 workday = weekday(2);枚举常量对应值从o开始,0, 1, 2, 3.typedef声明新类型typedef int INTEGER ,相当于为 int 起了个 别名,下面程序中就可以直接用INTEGER乍int 用了主要为了方便系统移植,如long int在VC中4 个字节,在GCC中占8个字节,直接用int的话 可能会溢出,用INTEGERS不用担心了,只要把 ypedef int INTEGER 声明语句一改就行运算符重载方法是定义一个重载运算符的函数,在需要执行 被重载的运算符时,系统就自动调用该函数,以 实现响应运

23、算。即运算符重载是通过定义函数实 现的,运算符重载实际上是函数重载。格式:函数类型operator 运算符名称(形参表列)对运算符的重载处理 例如:将+用于Complex类(复数)的加法运 算,函数原型如下:Complex operator + (Complex& c1, Complex& c2);注: operator 是关键字, operator + 就是函 数名,可以描述为: 函数operator +重载了运 算符+整数加可以想象为调用如下函数int operator + (int a,i nt b) return a+b; cpp view pla in copy01.

24、# in elude <iostream>02.us ing n amespace std;O3.class ComplexO4.05. public:06. Complex()real=O;imag=O;double07.Complex(double r,r)real=r;imag=i;08. Complex operator + (Complex &c2);/声明重载运算符的函数09. void display();10. private:11. double rea;12. double imag;13. ;14. Complex Complex:operator + (Complex &c2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论