zoukankan      html  css  js  c++  java
  • C++学习笔记指针和引用的注意事项

    一:指针

    1
    指针变量的定义,由数据类型后跟星号,再跟指针变量名组成。

    2
    &表示一个实体的地址,此符号可用来对指针变量初始化和赋值
    如:
    int count = 18;
    int * iptr = &count;
    int * ip;
    ip = &count;

    3

    *除了可以用来定义指针,标致乘法运算符,还可以做间访操作
    间访操作就是:取指针的值
    如:
    int count = 18;
    int * iptr = &count;
    *iptr = 16;
    cout<<*iptr<<"  "<<count<<endl;
    输出结果为:16    16

    4

    指针本身也是一种类型,在内存中也占有空间,所以也有指向指针的指针

    int count = 18;
    int *ip = &count;
    int* * iptr = &ip;
    cout<<**iptr<<endl;
    输出18

    5

    指针的0值不是表示指向地址0的空间,而是表示空指针。指针只有指向具体的实体才有意义
    也就是:指针忘记赋值比整型变量忘记赋值要危险的多

    6

    指针虽然是一个地址,但却是有类型限制的
    不能把float的变量地址赋值给int型的指针
    但是可以对指针进行强制转换
    如:
    float f = 34.5;
    int * ip = reinterpret_cast<int*>(&f);
    cout<<*ip<<endl;
    但是专家都不推荐这样做!

    7

    数组名本身就是表示元素类型的地址
    可以把数组名赋值给指针变量
    并且可以根据指针的增减来访问数组中的对象
    如:
    int arr[6];
    for(int i=0; i<6; i++)
    {
          arr[i] = i*2;
    }
    for(int * p = arr; p<arr+6;p++)
    {
          cout<<p<<":"<<*ip<<endl;
    }
    注意:指针的增减是以该类型的实体大小为单位的


    8
    常量指针是指向常量的指针
    指针常量是指针值不能修改的指针
    我想这两个应该很少用到吧

    二:引用

    1
    引用在这里是个名词
    从逻辑上理解引用其实就是个别名
    引用定义时必须初始化,这是它与指针根本不同的地方
    引用与指针相似也要求严格的类型匹配

    2
    修改引用的值就是修改实体的值,就是修改对应的变量的值
    int a = 12;
    int & r = a;
    r = 9;
    cout<<r<<endl;
    应输出9
    应注意的是:
    引用的值虽然可能发生变化但其地址是不变的
    可以通过&r查看该引用的地址
    与指针对比:
    指针可以改变关联的实体,引用只是一个实体的别名
    指针可以操作多个实体,引用只能操纵一个实体
    引用比指针更安全些,更适合高级编程,安全编程

  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/liulun/p/1630075.html
Copyright © 2011-2022 走看看