《C语言与C语言的区别.ppt》由会员分享,可在线阅读,更多相关《C语言与C语言的区别.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言与语言与C+语言的语言的区别区别C语言与C+语言的最主要区别C是面向过程的语言,C+是面向对象的语言。因此,C中没有类的概念,全部代码都包含在函数中。C提供了大量的库函数:输入输出函数:输入输出函数:printf(),scanf(),printf(),scanf(),动态内存分配函数:动态内存分配函数:malloc(),free(),malloc(),free(),内存管理:内存管理:memset(),memcpy(),memset(),memcpy(),.C+程序与C程序对比#include using namespace std;int main()for(int i=0;i10;i
2、+)coutHello!endl;return 0;#include int main()int i;for(i=0;i10;i+)printf(Hello!n);return 0;C+CC语言与C+语言的区别变量定义位置结构体变量数据类型输入输出动态内存分配其他区别1.变量定义位置C89要求所有变量都必须定义在块的最前部C+没有这个要求,可以在程序任意位置定义新的变量2.结构体变量在C+中,struct结构体支持成员函数的定义,C中不行。如果在C的struct中定义函数,编译时会显示一个“field function name declared as function”错误2.结构体变量(续
3、)/*ch3_10.c*/struct Aint a;int b();int main()struct A c;c.a=2;return 0;编译错误:编译错误:“ch3_10.c:5:error:field b declared as a function”C+标准可以通过编译标准可以通过编译2.结构体变量(续)在C语言中,声明一个结构体类型A之后,使用下面的语句来定义结构体变量a:struct A a;struct A a;而C+语言中可以省略struct3.数据类型C+中有bool(或boolean类型);C中没有这样的bool类型,均为数值类型!C编译器不能通过编译,C+编译器可以bo
4、ol a;a=1;4.输入输出 C中使用printf、scanf输入输出使用时必须包含stdio.h头文件int a;scanf(%d,&a);printf(您输入的数值是您输入的数值是%dn,a);A.scanf()函数功能:从键盘读入指定格式的数据从键盘读入指定格式的数据格式:scanf(scanf(控制字符串控制字符串,输入项列表输入项列表 ););注意:scanfscanf中各变量一定是表示地址的标识符中各变量一定是表示地址的标识符(加加&)&)控制字符串控制字符串有两部分组成:格式说明格式说明形式:形式:%普通字符普通字符空格空格可打印字符可打印字符格式说明各格式字符及其意义:(详见
5、各格式字符及其意义:(详见C C教程)教程)d d:输入一个十进制整数:输入一个十进制整数 o o:输入一个八进制整数:输入一个八进制整数 x x:输入一个十六进制整数:输入一个十六进制整数 f f:输入一个小数形式的浮点数:输入一个小数形式的浮点数 e e:输入一个指数形式的浮点数:输入一个指数形式的浮点数 c c:输入一个字符:输入一个字符 s s:输入一个字符串:输入一个字符串空格在多个输入时,一般用空格或回车作为分隔符若以空格作为分隔符,当输入中包含字符类型时,可能产生非预期的结果scanf(%d%c,&a,&ch);输入:输入:45 q输出:输出:45 空格空格空格(续)如下语句会有
6、正确输出此处%d后的空格,就可以跳过字符q前的所有空格scanf(%d%c,&a,&ch);输入:输入:45 q输出:输出:45 q可打印字符看一个例子输入为:1,2,q可以得到 a=1,b=2,ch=q输入为:1 2 q除a的值为1外,对b与ch的赋值失败scanf(%d,%d,%c,&a,&b,&ch);B.printf()函数功能:从缺省输出设备(一般为显示器)输出规定格式从缺省输出设备(一般为显示器)输出规定格式的字符串的字符串格式:printf(printf(控制字符串控制字符串,输入项列表输入项列表 ););控制字符串控制字符串有两部分组成:格式说明格式说明形式:形式:%普通字符普
7、通字符空格空格可打印字符可打印字符格式说明各格式字符及其意义:(详见各格式字符及其意义:(详见C C教程)教程)c c:按字符型输出:按字符型输出 o o:按八进制输出:按八进制输出 d d:按十进制输出:按十进制输出 x x:按十六进制输出:按十六进制输出 u u:按无符号整数输出:按无符号整数输出 f f:按浮点型小数输出:按浮点型小数输出 g g:按:按e e和和f f格式中较短的一种输出格式中较短的一种输出 e e:按科学计数法输出:按科学计数法输出普通字符普通字符:可打印字符可打印字符主要是说明字符,按原样输出,支持汉字输出主要是说明字符,按原样输出,支持汉字输出转义字符(例)转义字
8、符(例)不能直接打印,控制产生特殊的输出效果不能直接打印,控制产生特殊的输出效果普通字符(续)转义字符示例i=789,n=123,a=92.34567,且,且i为整型,为整型,n为长整型。为长整型。printf(%4dt%7.4fnt%lun,i,a,n);输出为:输出为:78992.3457 123C语言输入输出总结输入输出可能是C和C+的最明显的区别C C中用中用scanf(),printf()scanf(),printf()来完成输入输出操作来完成输入输出操作C+C+中全局对象中全局对象cincin、coutcout来输入输出,比来输入输出,比C C更方更方便,而且类型检查机制更加完善便
9、,而且类型检查机制更加完善C+中的使用方式newnew申请申请deletedelete释放释放C中的使用方式malloc()malloc()申请申请free()free()释放释放5.动态内存分配函数原型:void*malloc(long size);void*malloc(long size);作用:在对内存中分配在对内存中分配sizesize各字节,并返回了指向这各字节,并返回了指向这块内存首地址的指针块内存首地址的指针 如果分配失败,返回如果分配失败,返回NULLNULL返回指针为void*型的,要强制转换A.malloc()函数函数原型:void free(void*FirstByte
10、);void free(void*FirstByte);作用:将之前用将之前用mallocmalloc申请的空间归还操作系统申请的空间归还操作系统 否则就导致内存泄漏否则就导致内存泄漏编译器不会发现内存泄漏这样的错误B.free()函数C.函数的用法/*例例 3-11*/#include#include int main()int*p;if(p=(int*)malloc(sizeof(int)=NULL)printf(动态内存分配失败动态内存分配失败n);exit(1);C.函数的用法(续)*p=100;printf(%dn,*p);free(p);p=NULL;return 0;头文件:mallocmalloc和和freefree被头文件被头文件stdlib.hstdlib.h包含包含 C+C+中中newnew和和deletedelete为关键字,故无需头文件为关键字,故无需头文件包含包含使用:int*p=(int*)malloc(sizeof(int);int*p=(int*)malloc(sizeof(int);int*p=new int;int*p=new int;与C+的几点区别6.其他区别常量表示方法不同常量表示方法不同C语言不支持引用的概念,而C+支持注释不同,C89不支持单行注释(+i)+在C中不合法(a=3)=4在C中不合法不能在for循环头部定义变量