C C++基本概念详解.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C C++基本概念详解 1.关于引用和指针 概念上,引用( )并不是对象,而是一个已经存在的对象的别名;引用不可以重新绑 定到另外一个对象,因此引用必须初始化。(类比const,一经定义就不能修改,所以必须初 始化,是同样的道理。) 引用和指针都是实现了其他对象的间接访问。不同的是:指针本身就是一个对象,允许 对指针进行赋值和拷贝;指针无需在定义时赋初值。 对于引用的概念,通过这段代码加深印象: int ival=12; int *p=ival; int refval=ival; int *p1=refval; int refval=ival;中的是代表引用声明符号;而int *p1=refval;的则代表取地址。 如下图的 watch 中所示,可以看 p 和 p1 这两个指针的值(所存放的地址值 0x0039F1D8 ),以及这两个指针所指向的值(12)是完全一样的(其实有点废话,既然两个 指针都是指向同一个地址,自然指向的值是一样的),也就是ival 和它的引用refval 是等价 的。 注意:虽然指针p1 初始化为refval,而refval 和ival 这两个值是不一样的,也就是 refval 和ival 是存放在内存中的不同地址上,但是int *p1=refval 这句初始化之后,p1 指针 上存的值其实并不是refval 的地址,而是refval 所引用的变量ival 的地址。因此,这里就更 明确了:引用的作用就相当于代言者,这个代言者所说所做的一切都代表了原始对象,与引 用自身无关。 由于引用不是对象,所以不存在指向引用的指针。我想基本上这也上面那句 int *p1=refval 之后,p1 的值竟然是ival 的地址的概念上的辅证。 但是存在指针的引用。 2.关于const 如果利用一个对象去初始化另外一个对象,则他们是否是const 都无所谓。常量特性仅 仅是用于限定其初始化之后不可修改。 如果想在多个文件中共享const 对象,必须在变量的定义之前添加extern 关键字。 3.C 风格字符串 C 风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写 法,按此习惯书写的字符串存放在字符数组中并用空字符(\0)结束。 char ca[] = { C, +, + }; cout strlen(ca) endl; 上面的示例中,ca 虽然是一个字符数组,但是它并没有以\0结束,因此这段代码输出 的结果不可知。strlen 函数在执行的时候可能沿着ca 在内存中的位置不断向前寻找,直到遇 到\0才结束。 而只有这样: char ca[] = { C, +, +, \0 }; cout strlen(ca) endl; 才能保证输出的结果是3. 再定义两个字符数组来说明: char ca1[] = string 1; char ca2[] = string 2; 由于在使用数组的时候,其实真正使用的是指向数组的首元素的指针。因此我们不能 用if(ca1ca2)这样的语句进行这两个字符数组的比较;也不能使用ca1+ca2 这样的语句进行 字符串的串联操作。 我们必须使用strcmp 进行字符串比较操作;使用strcpy 和strcat 进行字符串的拷贝和连 接操作,而且在strcpy 和strcat 函数的使用的时候,我们要非常仔细的检查字符数组的容量: char sumStr[40];//注意数组容量,调试的时候又想起了最近看到的关于“烫烫烫烫” 的冷笑话 strcpy(sumStr, ca1); strcat(sumStr, -); strcat(sumStr, ca2); (ps:在vs2013 上进行编译的时候,编译器直接告诉我:strcpy: This function or variable may be unsafe. Consider using strcpy_s instead char sumStr[40]; strcpy_s(sumStr, ca1); strca

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档