下载此文档

CC基本概念详解.doc


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
C C++基本概念详解

概念上,引用(&)并不是对象,而是一个已经存在的对象的别名;引用不可以重新绑定到另外一个对象,因此引用必须初始化。(类比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的地址的概念上的辅证。
但是存在指针的引用。

如果利用一个对象去初始化另外一个对象,则他们是否是const都无所谓。常量特性仅仅是用于限定其初始化之后不可修改。
如果想在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。

 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(ca1<ca2)这样的语句进行这两个字符数组的比较;也不能使用ca1+ca2这样的语句进行字符串的串联操作。
我们必须使用strcmp进行字符串比较操作;使用strcpy和strcat进行字符串

CC基本概念详解 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人JZZQ12
  • 文件大小61 KB
  • 时间2018-05-03
最近更新