• 【笔记】C++ 指针和引用的使用


    1.1 指针的概念

      声明任何一个变量,系统都会为其分配一定大小的内存,访问变量实际上就是访问其所占据的内存空间。

    1.2 指针变量的声明、初始化和访问

    1.2.1 声明:     数据类型 *变量名

    1.2.2 初始化:   3种方式  

    (1)初始化为NULL或0:表示指针变量指向的是一片无效的不可访问的内存;

      如: int *p= NULL;(NULL必须大写

    (2)初始化为已声明变量的地址;

      如:  int a;

         int *p=&a;   (指针变量的声明类型与其所指向的变量的类型必须一致,否则就要给出显式的强制类型转换)

    (3)初始化为某一动态分配内存空间的地址。

    1.2.3 指针变量的访问

      可以通过该指针变量访问内存中的数据,其访问形式为:

      *指针变量名

    1.3 指针和数组

    1.3.1 用指针操作一维数组

    要点:定义相同类型的数组和指针变量,将指针变量指向数组首地址。

    如:

    1 int a[]={1,2},b[]={3,4}
    2  int *p=NULL;
    3 p=a;
    4
    5 p=&b[0];

    1.3.2 用指针操作二维数组

    (1)使用指向行的指针变量操作二维数组

    声明形式为:  数据类型 (*指针变量名)[行长度];

    如:

    1 int a[][2]={1,2},b[][2]={3,4};
    2 int (*p)[2]=NULL;
    3
    4 p=a;
    5 cout<<p[0][0]<<p[0][1];
    6
    7 p=&b[0];
    8 cout<<p[0][0]<<p[0][1];

    (2)使用指针变量操作二维数组

    如:

    1 int a[][2]={1,2,3,4},b[][2]={4,3,2,1};
    2 int *p=NULL;
    3
    4 p=a[0];
    5 cout<<p[0]<<p[1];
    6
    7 p=&b[0][0];
    8 cout<<p[0]<<p[1];

    注:第四行和第七行等价,都表示二维数组第一个元素的首地址。

    1.4 指向指针的指针

    二级指针变量的声明方式为:  数据类型 **变量名;

    。。。

    1.5 const指针

      const指针分为常量指针和指针常量。

    1.5.1 常量指针

      声明形式:  const 数据类型 *变量名;

      常量指针所指向的内存地址可以改变,但通过常量指针只能从内存读取数据,但不能修改内存中的数据。

    1.5.2 指针常量

      声明形式:   数据类型 *const 变量名;

      指针常量是一个常量而不是变量,因此指针常量所指向的内存是固定的,不能改变的,但可以修改内存中的数据。

    1.6 堆内存分配

      堆内存分配就是动态内存分配,指在程序运行时从堆中为指针变量申请实际需要的内存空间,当其不再使用时,要及时释放。

      C++中,使用newdelete这两个关键字完成堆内存分配和释放的操作。

    说明:

    (1)使用new分配的内存必须使用delete释放,否则会造成内存泄露,导致计算机处理速度变慢。

    (2)在使用new分配堆内存时要区分[ ]和()。[ ]指定元素数目,()指定内存初值。如:

    1 int a=3;
    2 int *p1 = new int[a]; //分配了3个int型大小的内存
    3 int *p2 = new int(a); //分配了1个int型大小的内存,且初值为3.

    (3)在分配内存时为多个元素分配了内存,那么在使用delete释放内存时必须加[ ].

    (4)必须使用指针保存分配的内存首地址,这是由于delete须根据首地址进行内存释放。

    (5)如果分配是一个内存,释放时可以将[ ]去掉。

     1.7 引用

     1.7.1 引用的概念

      引用就是别名。

    1.7.2 引用的声明

      声明形式:  数据类型 &引用名 = 变量名   其中,“&”是引用运算符。  其他用途:位与运算符、取地址运算符。

     1.73 const引用

      cosnt引用没有常量引用和引用常量之分,两种声明形式:

      const  数据类型 &引用名 =  变量名或常量     或者        数据类型 const  &引用名 =  变量名或常量

       const引用只能访问所引用对象的值,而不能修改所引用对象的值。

     好了,今天的学习就到这里了。

    参考:

    面向对象程序设计----C++高级语言    主编:赵宏

  • 相关阅读:
    Spring MVC:框架及其组件介绍
    Goods:生成订单
    Goods:我的订单查询分页
    LeetCode:Kth Largest Element in an Array(need update)
    LeetCode:Swap Nodes in Pairs
    Goods:购物车条目加减数量实现
    LeetCode:Sum Root to Leaf Numbers
    Goods:购物车模块之全选按钮与条目之复选按钮的click事件
    Goods:查询某个用户的购物车条目以及添加购物车条目
    洛谷2387 NOI2014魔法森林(LCT维护最小生成树)
  • 原文地址:https://www.cnblogs.com/kongtiao/p/2067782.html
Copyright © 2020-2023  润新知