C++对C的扩充、.ppt

C对C的扩充、

C++扩充:内置函数 内置函数与宏函数的比较: 宏函数只是简单替换,不作“参数”的运算和类型检查,程序容易出现逻辑错误。 内置函数避免了宏函数的问题,推荐采用。 内置函数提高了程序的执行效率,但增加了程序目标代码的长度。 比如:某个内置函数需要调用10次,编译时 将该函数的代码复制插入到每一个调用处, 为此,增加了目标代码长度。 C++扩充:作用域符号 作用域符号:: 域名::域成员名(变量或函数) 全局变量与局部变量同名: #include iostream //using namespace std ; //cout定义在std域 float a=13.5 ; int main() { int a=5; //局部屏蔽全局 std::cout a endl ; //输出局部变量a 13.5 std::cout ::a ; //输出全局变量a 5 return 0 ; } //::前域名省略表示全局 C++扩充:字符串类型 C 仅有字符char类型,无字符串类型 为此,只能定义字符数组来存放字符串,使用 系统提供的字符处理函数来处理字符串,如: strcpy(复制),strcat(连接),strcmp(比较), strlen(长度)等,它们的完整使用查联机帮助。 字符串操作,是软件开发中最为常用的技术, 需很好地、全面地掌握它们的各种使用方法。 使用上述函数需 #include string.h ,联机 帮助说明了每个函数需要包含的头文件。 C++扩充:字符串类型 C++ 增加 string 类类型处理字符串: 使用 string 时需 #include string 定义字符串变量:(实质上是对象) string str1 ; string str2 = “china” ; //定义同时初始化 对字符串变量赋值: string str1, str2; char str3[10]; str1= “China” ; //对,且不用指明长度 str3= “China” ; //错,数组不能这样赋值 C++扩充:字符串类型 str2 = “Hi” ; str2 = str1 ; //两个字符串相互赋值,即使str2 //原来长度为2也无妨,因为长度 //随字符串长度的改变而改变。 str2[3]=‘\0’ ; //操作单个字符:China→Chi // ’\0’ 是字符串结束标志 cout str2 ; //输出字符串 cout str2.length(); //str2是一个对象 cin str2 ; //键入字符串 C++扩充:字符串类型 字符串变量的运算: 复制:赋值实现(=) strcpy(...) str2 = str1; //等价:strcpy(str2, str1); 连接:加法实现(+) strcat(...) string str1 = “C++ ”, str2 = “Language” ; str1 = str1 + str2 ; //输出:C++ Language 比较:关系运算符实现 strcmp(...) == != = = 其他:成员函数或成员变量实现 C++扩充:字符串数组 #include iostream #include string using namespace std ; string name[3] ; //定义个字符串数组,未初始化 string name[3] = { “Zhang”, “Li”, “Zhao” } ; cout sizeof(string) endl ; //4 bytes cout sizeof(name) ; //3*4=12 cout name[2] ; name[2] name[1] name[0] 首地址 首地址 首地址 Zhao Li Zhang 字符串数组的内存格式 C++扩充:new 和 delete 内存的动态分配与释放 程序需要时分配一定大小的内存块供使用,使用完毕后释放已经分配的内存块,以节省程序运行所需的内存大小。(好的风格) 程序运行时才能确定数组的元素个数,如果预先固定分配,其大小难以掌握。 C 语言用 malloc 和 free 两个函数实现,这两个函数使用不够简便,功能不够强大。 C++ 用 new

文档评论(0)

1亿VIP精品文档

相关文档