C++指针小结

  1. 对每个指针变量名,都需要一个*(间接值或解除引用运算符)。
  2. *运算符两边的空格是可以选的。

    • C程序使用格式:

      1
      int *ptr;  //这里强调*ptr是一个int类型的值
    • C++程序使用格式:

      1
      int* ptr;  //这里强调int*是一个类型————指向int的指针

    注意:在C++中,int*是一种复合类型,是指向int的指针。
  3. 一定要在对指针应用解除引用运算符(*)之前,将指针初始化,要不就会成为一个不确定的野指针。

  4. 指针不是整型,指针和整数是两个截然不同的类型,不允许直接像C一样直接赋于没有声明的整数内存地址;

    1
    2
    3
    int* ptr;  
    ptr = 0xB8000000; //type mismatch
    ptr = (int*)0xB8000000; //type now match

    注意:ptr是int值的地址并不意味着ptr本身的类型是int!!!
  5. 对空指针使用delete是安全的。

  6. 在很多情况下,可以用相同的方式使用指针和数组名,因为C++将数组名解释为地址,区别之一是,可以修改指针的值,而数组名是常量。

    1
    2
    pointername = pointername + 1;	//valid
    arrayname = arrayname + 1; //not allowed