C++ PRIMER读书笔记 之 数组与指针

来源:互联网 发布:开源网络代理服务器 编辑:程序博客网 时间:2024/06/06 09:36

CH4   数组和指针

数组   

1.维数必须用值大于等于1的常量表达式定义。 此常量表达式 只能包含 整形字面值枚举常量或者用常量表达式初始化的整形const对象。 
注意  :非const变量以及要到运行阶段才知道值得const变量不能用于定义数组维数。
例:
     const unsigned sz = get_size();
     int test_score[sz];                      //错误 size not known until run time
 
2.用字符串字面值初始化字符数组时,末尾包含额外的空字符用于结束字符串。
    char ca3[]="c++";   //null terminator added automatically
    const char ca3[6] = "daniel";   //error:daniel is 7 elements

3.c++不允许一个数组用另一个数组初始化,也不能将一个数组赋值给另一个数组,操作非法
  某些编译器允许将数组赋值作为编译器扩展。应避免使用这种功能

指针

  1.声明指针的风格

     宜采用 string  *ps1,*ps2;

     尽量不采用 string*  ps1,ps2;    //  ps1是指针  但是ps2是string  容易混淆

   2.指针可能的初值

       三种状态之一 :

                保存一个特定对象的地址;

                指向某个对象后面的另一对象;

                或者是0值,若是0值,表明它不指向任何对象。  int *pi = 0;

                也可使用从C语言集成下来的预处理变量NULL,在头文件cstdlib中定义,其值为0.把指针初始化未NULL等效于初始化未0值。

    如果可能的话,除非所指向的对象已经存在,否则不要定义指针,这样可以避免定义一个未初始化的指针。

    如果必须分开定义指针和其所指向的对象,则将指针初始化未0。因为编译器可以检测出0值得指针,程序可判断该指针未指向一个对象。

      3.指针于const限定符

            指向const对象的指针:   

             理解为 “自以为指向const的指针”  不能通过此指针修改指向对象的值(指向的对象可能不是非const),指针本身指向能够改变。

             const double pi = 3.14;

             double dval = 3.14;

             const double *cptr = π

                     cptr = &dval;

           const指针:

             指针本身的值不能改变,但指针所指对象的值能否修改完全取决于该对象的类型

                 int errNumb = 0;

                 int *const curErr = &errNumb;

           指向const对象的const指针:

                const double pi = 3.14159;

                const double *const pi_ptr = π

               既不能修改pi_ptr所指向对象的值,也不能修改该指针的指向。


     4 指针与typedef

          typedef string *pstring;

          const pstring cstr;

          cstr的类型是什么???(极易出错)


         很多人认为 真正的类型是:

           const string *cstr;    指向string类型的const对象   这是错误的

          

           注意  声明const pstring 时,const 修饰的是pstring的类型,这是一个指针。因此该声明语句应该是把

           cstr定义为指向string 类型对象的const指针,等价于

               string *const cstr;

           

          

   理解复杂的const声明   以后待整理

              

0 0
原创粉丝点击