- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
p3[0]=5; p3[1]=4; coutp1地址是:p1 p1的值是:*p1endl; coutp2地址是:p2 p2的值是:*p2endl; coutp3[0]地址是:p3 p1的值是:*p3endl; coutp3[1]地址是:p3[1] p1的值是:p3[1]endl; delete p1; delete p2; //delete p3; //错误,只释放p3指向数组的第一个元素 delete []p3; return 0; } 2.10编译预处理 编译预处理是C++编译系统的一个重要组成部分,它负责分析处理几种特殊的指令,这些指令被称为预处理命令。 编译预处理命令,可以改进程序设计环境,提高编程效率。 但它们不是C++语言的组成部分,不能直接对它们进行编译。 编译系统在对源程序进行正式的编译之前,必须先对这些命令进行预处理,经过预处理后的程序不再包括预处理命令,然后由编译系统对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 C++提供的预处理命令主要有以下三种: (1)宏定义 (2)文件包含 (3)条件编译 这些命令均以“#”开头,每行一条命令,因为它们不是C++的语句,所以命令后无分号。 2.10.1宏定义 可以利用预处理指令#define来定义宏,而使用#undef删除由#define定义的宏,使之不再起作用。 使用#define预处理指令可以把一个名称指定成任何文字,例如,常量值或者语句。 定义宏后, 当此宏的名称出现在源代码中,预处理器就会把它替换掉。 #define可以定义符号常量、函数功能、重新命名、字符串的拼接等各种功能。例如: #define PI 3.1415925 //定义符号PI为3.1415925 #undef PI //取消PI的值 说明: (1)宏名一般用大写字母表示,以便与变量名相区别。 (2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量,当需要改变某一个常量时,可以只改变#define命令行,做到一改全改,不容易出错。 (3)宏定义是用宏名代替一个字符串,在宏展开时只是作简单的字符串替换,并不对语法是否正确进行检查。 (4)宏定义不是C++语句,一定不要在行末加分号,如果加了分号,会将分号当成字符串的一部分进行替换。 (5)通常把#define命令放在一个文件的开头,使其定义在本文件内全部有效,即作用范围从其定义位置起到文件结束。 (6)可以使用#undef命令来取消宏定义的作用域。 2.11文件的输入和输出 前面使用的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的。 在实际应用中,为了能够长期保留数据信息,常常以磁盘文件作为对象,即从磁盘文件中读取数据,或将数据输出到磁盘文件。 磁盘是计算机的外部存储器,能读能写,方便携带,因而得到广泛的使用。 2.11.2文件的输入和输出 当文件打开后,即建立文件与流对象关联后,就可以进行输入输出(读写)操作了。 输入输出操作与cout、cin用法相同,可以使用插入运算符“”或析取运算符“”从文件中读写数据。将输入文件流变量与“”连接能够从文件中读入数据,将输出文件流变量与“”连接能够将数据输出到文件中。 例如: outDatax; //将变量x的值输出到文件中 inDatax; //从文件中读入变量x的值 C++文件操作过程的5个步骤: (1)首先在程序包含头文件fstream。 #include fstream (2)定义文件流变量。 ifstream inData; //定义输入文件流变量 ofstream outData; //定义输出文件流变量 (3)使用open()函数将文件流变量与磁盘文件关联起来。 outData.open(C:\\EF\\aa.txt,ios::app); 第(2)步、第(3)步也可以合并为一步,下面的命令与上面的两条命令等价: str1=床前明月光,疑是地上霜,举头望明月,低台头思故乡。; outstrstr1; outstr.close(); instr.open(C:\\d.txt); instrstr2; coutstr2; instr.close(); return 0; } 小 结 1.命名空间 为了解决不同模块或者函数库中标识符命名冲突的
文档评论(0)