您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C语言与C++语言的区别
C语言与C++语言的区别C语言与C++语言的最主要区别►C是面向过程的语言,C++是面向对象的语言。►因此,C中没有类的概念,全部代码都包含在函数中。►C提供了大量的库函数:输入输出函数:printf(),scanf(),…动态内存分配函数:malloc(),free(),…内存管理:memset(),memcpy(),…...C++程序与C程序对比#includeiostreamusingnamespacestd;intmain(){for(inti=0;i10;i++){coutHello!endl;}return0;}#includestdio.hintmain(){inti;for(i=0;i10;i++){printf(Hello!\n);}return0;}C++CC语言与C++语言的区别►变量定义位置►结构体变量►数据类型►输入输出►动态内存分配►其他区别1.变量定义位置►C89要求所有变量都必须定义在块的最前部►C++没有这个要求,可以在程序任意位置定义新的变量2.结构体变量►在C++中,struct结构体支持成员函数的定义,C中不行。►如果在C的struct中定义函数,编译时会显示一个“field‘functionname’declaredasfunction”错误2.结构体变量(续)/*ch3_10.c*/structA{inta;intb();};intmain(){structAc;c.a=2;return0;}编译错误:“ch3_10.c:5:error:field'b'declaredasafunction”C++标准可以通过编译2.结构体变量(续)►在C语言中,声明一个结构体类型A之后,使用下面的语句来定义结构体变量a:structAa;►而C++语言中可以省略struct3.数据类型►C++中有bool(或boolean类型);►C中没有这样的bool类型,均为数值类型!►C编译器不能通过编译,C++编译器可以boola;a=1;4.输入输出►C中使用printf、scanf输入输出►使用时必须包含stdio.h头文件inta;scanf(%d,&a);printf(您输入的数值是%d\n,a);A.scanf()函数►功能:从键盘读入指定格式的数据►格式:scanf(控制字符串,输入项列表);►注意:scanf中各变量一定是表示地址的标识符(加&)控制字符串►控制字符串有两部分组成:格式说明►形式:%[修饰符]格式字普通字符►空格►可打印字符格式说明►各格式字符及其意义:(详见C教程)d:输入一个十进制整数o:输入一个八进制整数x:输入一个十六进制整数f:输入一个小数形式的浮点数e:输入一个指数形式的浮点数c:输入一个字符s:输入一个字符串空格►在多个输入时,一般用空格或回车作为分隔符►若以空格作为分隔符,当输入中包含字符类型时,可能产生非预期的结果scanf(%d%c,&a,&ch);输入:45q输出:45空格空格(续)►如下语句会有正确输出►此处%d后的空格,就可以跳过字符'q'前的所有空格scanf(%d%c,&a,&ch);输入:45q输出:45q可打印字符►看一个例子►输入为:1,2,q►可以得到a=1,b=2,ch=q►输入为:12q►除a的值为1外,对b与ch的赋值失败scanf(%d,%d,%c,&a,&b,&ch);B.printf()函数►功能:从缺省输出设备(一般为显示器)输出规定格式的字符串►格式:printf(控制字符串,输入项列表);控制字符串►控制字符串有两部分组成:格式说明►形式:%[修饰符]格式字普通字符►空格►可打印字符格式说明►各格式字符及其意义:(详见C教程)c:按字符型输出o:按八进制输出d:按十进制输出x:按十六进制输出u:按无符号整数输出f:按浮点型小数输出g:按e和f格式中较短的一种输出e:按科学计数法输出普通字符►普通字符:可打印字符►主要是说明字符,按原样输出,支持汉字输出转义字符(例)►不能直接打印,控制产生特殊的输出效果普通字符(续)►转义字符示例i=789,n=123,a=92.34567,且i为整型,n为长整型。printf(%4d\t%7.4f\n\t%lu\n,i,a,n);输出为:78992.3457123C语言输入输出总结►输入输出可能是C和C++的最明显的区别C中用scanf(),printf()来完成输入输出操作C++中全局对象cin、cout来输入输出,比C更方便,而且类型检查机制更加完善►C++中的使用方式new申请delete释放►C中的使用方式malloc()申请free()释放5.动态内存分配►函数原型:void*malloc(longsize);►作用:在对内存中分配size各字节,并返回了指向这块内存首地址的指针如果分配失败,返回NULL►返回指针为void*型的,要强制转换A.malloc()函数►函数原型:voidfree(void*FirstByte);►作用:将之前用malloc申请的空间归还操作系统否则就导致内存泄漏►编译器不会发现内存泄漏这样的错误B.free()函数C.函数的用法/*例3-11*/#includestdlib.h#includestdio.hintmain(){int*p;if((p=(int*)malloc(sizeof(int)))==NULL){printf(动态内存分配失败\n);exit(1);}C.函数的用法(续)*p=100;printf(%d\n,*p);free(p);p=NULL;return0;}►头文件:malloc和free被头文件stdlib.h包含C++中new和delete为关键字,故无需头文件包含►使用:int*p=(int*)malloc(sizeof(int));int*p=newint;与C++的几点区别6.其他区别►常量表示方法不同►C语言不支持引用的概念,而C++支持►注释不同,C89不支持单行注释►(++i)++在C中不合法►(a=3)=4在C中不合法►不能在for循环头部定义变量
本文标题:C语言与C++语言的区别
链接地址:https://www.777doc.com/doc-2908150 .html