c个人笔记总结

上传人:亦明 文档编号:122620553 上传时间:2020-03-06 格式:DOC 页数:19 大小:176.80KB
返回 下载 相关 举报
c个人笔记总结_第1页
第1页 / 共19页
c个人笔记总结_第2页
第2页 / 共19页
c个人笔记总结_第3页
第3页 / 共19页
c个人笔记总结_第4页
第4页 / 共19页
c个人笔记总结_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c个人笔记总结》由会员分享,可在线阅读,更多相关《c个人笔记总结(19页珍藏版)》请在金锄头文库上搜索。

1、c 个人笔记总结 C+个人笔记总结-王小龙-Good luckBelieve yourselfJust go概述 一、C+语言语法基础 (6)1.从C到C+的过渡2.类和对象3.操作符重载4.继承与多态5.异常和I/O流 二、数据结构和算法1.基本数据结构,堆栈、队列、链表、二叉树,实现和应用 (2)2.排序和查找算法 三、模板和STL1.模板语法2.STL 四、阶段项目简化的企业管理信息系统(MIS)第一课从从C C到到C+的过渡 一、背景介绍算盘-面向硬件的编程电子计算机-机器语言的编程1010-汇编语言的编程ADD-高级语言的编程Fortran printf(%d,12);-结构化程序设

2、计C/PASCL顺序、分支、循环、函数-面向对象的程序设计C+/Java/C#-面向问题的程序设计1960-Algol60,算法语言,远离硬件,不适合进行系统开发1963-剑桥大学,CPL,在Algol60的基础上增加对系统开发的支持,复杂,不易掌握,不易使用1970-MIT,BCPL,CPL的精华版,易学易用,太慢,不实用1972-Ken Thomposon,B语言,通过运行时支持优化BCPL的性能,缺少类型1973-Dennis Ritchie,C语言,用C重新实现UNIX内核1978-The CProgramming Language,第一个C语言的事实标准1989-ANSI C,C89

3、1990-ISO C,C901999-ISO C修订,C99197X-Bajarne Stroustrup,simula早期的面向对象语言,性能低下,B语言。 1979-贝尔实验室,多核UNIX系统仿真,Cpre,通过扩展宏为C语言增加类似simula的面向对象机制。 C withClass:simula-类Alogo68-操作符重载Ada-模板、名字空间Smalltalk-引用、异常C是C+的子集,C+是对C的扩展。 1983-C+命名1985-CFront1.0,第一款商用C+编译器1987-GNU C+1990-Borland C+1992-Microsoft C+,IBM C+1998

4、-ISO C+98xx-ISO C+03xx-ISO C+xx/C+11/C+0x 二、C+语言的使用领域1.游戏开发强建模能力,性能高。 2.科学计算FORTRAN,C+算法库。 3.网络和分布式ACE框架。 4.桌面应用VC/MFC,Office,QQ,多媒体5.操作系统和设备驱动优化编译器的发明使C+在底层开发方面可以和C向媲美。 6.移动终端既需要性能,同时又要有面向对象的建模。 三、C+比比C C更丰富1.支持面向对象,将问题域和方法域统一化。 宏观面向对象,微观面向过程。 2.支持泛型编程。 int add(int a,int b).templateT add(T a,T b).3

5、.支持异常机制。 int func(void).int main(void)if(func()=-1)错误处理;4.操作符重载 四、第一个C+程序1.编译器g+,如果用g需要带上-lstdc+,指定其使用标准c+的运行库。 2.源文件扩展名.cpp/./.C/.cxx/.c+,最好用.cpp3.头文件#include大多数标准库头文件都没有.h后缀。 4.输出cout-标准输出对象输入cin-标准输入对象插入运算符5.std所有标准库的函数、对象、类型都位于std名字空间中。 五、名字空间1.对程序中的标识符(类型、函数、变量),按照某种逻辑规则划分成若干组。 2.定义名字空间namespac

6、e名字空间名名字空间成员;3.使用名字空间11作用于限定符名字空间名:名字空间成员,表示访问特定名字空间中的特定成员。 例子#includeint main(void)std:coutHello,World!ids;/printf(%d%lf%sn,i,d,s);std:cout 例using namespacestd;33名字空间声明using名字空间名:名字空间成员;将指定名字空间中的某个成员引入当前作用域,可直接访问这些成员,无需加“:”。 4.匿名名字空间如果一个标识符没有被显示地定义在任何名字空间中,编译器会将其缺省地置于匿名名字空间中。 对匿名名字空间中的成员通过“:名字空间成员”

7、的形式访问。 5.名字空间合并6.名字空间嵌套namespace ns1namespace ns2namespace ns3void foo(void).ns1:ns2:ns3:foo();using namespace ns1:ns2:ns3;foo();-例子名字空间#includeusing namespacestd;/namespacevoid print(int money)cout (5000);cout农行 (3000);cout农行 (8000);cout建行 (5000);cout建行 (6000);cout建行1例子#includeusing namespacestd;st

8、ruct Studentchar name128;int age;void who(void)/成员函数cout我叫 who();struct A;cout 借用联合语法形式,描述一些变量在内存中的布局方式。 int main()UNIONint a;char ch4;a=0x12345678;定义联合变量时,可以不加union例子#includeusing namespacestd;int main(void)/匿名联合unionint x;char c4/*=A,B,C,D*/;cout(void*)&x(void*)c C:enum Ea,b,c;enum E e;e=a;e=1000;

9、C+:enum Ea,b,c;E e;e=a;e=b;e=c;b=1;/ERROR!e=1000;/ERROR!e=1;/ERROR!例子#includeusing namespacestd;int main(void)enum Ea,b,c;Ee;e=a;e=b;e=c;/e=1000;/报错/e=1;/报错return0; 七、C+的布尔类型,跟在t cout后面可以boolalpha boolb=true;b=false;cout 八、C+中的运算符别名&-and|-or&-bitand-xor- 九、C+中的函数1.重载条件在同一个作用域中,函数名相同,参数表不同的函数,构成重载关系。

10、 C+编译器会对程序中的函数做换名,将参数表中的类型信息汇合到函数名中,以保证函数名的唯一。 通过externC,可以要求编译器不做C+换名,以方便在C语言的模块中使用C+编译生成的代码。 方式一externCint add(int a,int b)return a+b;int sub(int a,int b)return a-b;方式二externCint add(int a,int b,int c)return a+b+c;2.缺省参数和哑元参数1)如果调用一个函数时,没有提供实参,那么对应形参就取缺省值。 2)如果一个参数带有缺省值,那么它后边的所有参数必须都带有缺省值。 3)如果一个函

11、数声明和定义分开,那么缺省参数只能放在声明中。 4)避免和重载发生歧义。 5)只有类型而没有名字的形参,谓之哑元。 i+-operator+i V1:void decode(int arg).V2:void decode(int).例子11重载与缺省值#includeusing namespacestd;void foo(int a=10,double b=0.01,const char*c=tarena);/函数11void foo(void)/函数22/函数11与函数22构成重载关系void bar(int)/函数33coutbar(int) (1);/调用函数1/foo();/歧义,可以

12、调用函数22,但也可以调用函数11,因为函数11在不提供实参的情况下,可以取缺省值。 bar (100);/调用函数33bar(100,12.34);/调用函数44return0;-例子22重载与作用域#includeusing namespacestd;namespace ns1int foo(int a)函数11coutns1:foo(int) (10) (10) cout using ns2:foo;/名字空间声明cout (10) cout return0;-3.内联1)编译器用函数的二进制代码替换函数调用语句,减少函数调用的时间开销。 这种优化策略成为内联。 2)频繁调用的简单函数适

13、合内联,而稀少调用的复杂函数不适合内联。 3)递归函数无法内联。 4)通过inline关键字,可以建议编译对指定函数进行内联,但是仅仅是建议而已。 inline void foo(int x,int y). 十、C+的动态内存分配malloc/calloc/realloc/free1.new/delete对单个变量进行内存分配/释放2.new/delete对数组进行内存分配/释放例子w new与与delete#includeusing namespacestd;int main(void)/int*pi=(int*)malloc(sizeof(int);/free(pi);c/c中的方法int*pi=new int;*pi=1000;cout*pi (1234);/用用w new分配内存的同时初始化赋一个值。 cout*pi 十一、引用1.引用即别名。 int a=20;int&b=a;/int*b=&a;b=10;/*b=10;cout int a;int*p;a=20;p=&a;int&b;/ERROR!int&b=a;/OK3.引

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号