C++Primer读书笔记(一)

来源:互联网 发布:找工作软件那个最靠谱 编辑:程序博客网 时间:2024/04/29 01:17
第四章 数组与指针
     指针和引用的比较:
              使用引用和指针都可间接的访问另一个值,但它们之间有两个重要的区别,第一引用总是指向某一个对象:定义引用时没有初始化是错误的。第二、赋值行为的差异:给引用赋值是修改的是该引用所关联的对象的值,而不是使引用与另外一个对象关联。引用一经初始化,就始终指向同一个特定的对象。举例:
int ival = 1024, ival2 = 2048;
int *pi = &ival, *pi2 = &ival2;
pi = pi2;
赋值结束后,pi指向的ival对象的值保持不变,赋值结束操作修改了pi指针的值,使其指向另外一个不同的对象。
int &ri = ival, &ri2 = ival2;
ri = ri2
这个赋值操作改变了ri引用的值,而非引用本身。
    
    C风格字符串:
               所有C风格字符串必须以字符串结束符null作为结束,举例               
      char str[] = {'a','b','c','d'};  //没有以null作为结束
      cout<<strlen(str)<<endl; //所得结果为不可预料的值
        C风格字符串与C++的标准库类型string的比较
//C-Style Character string implementation
const char *pc = "a very long literal string";
const size_t len = strlen(pc);
//performance test an string allocation and copy
for (size_t ix = 0; ix != 1000000; ++ix)
{
char *pc2 = new char[len+1];   //allocation the space
strcpy(pc2, pc);
if (strcmp(pc2, pc))    
{
;                      //do nothing
}
delete [] pc2;       //free the memory
}


       //C++ STRING
string str("a very long literal string");
for (size_t ix = 0; ix != 1000000; ++ix)
{
string str2 = str;    //do the copy
if (str != str2)
{
;                  //do nothing
}
}                        //str2 is automatically freed