zoukankan      html  css  js  c++  java
  • C++之指针

    C++中指针是一个很让人头疼的东西,指针指向这儿指向那儿很容易把人搞晕了。指针实现了对象的间接访问,指针本身也是对象这点和引用不同,引用仅仅是对象的别名。指针可以在其生命周期内指向不同的对象(当然除了指针常量),另外指针无需在定义时赋值,指针也可以为空指针或者无效指针。

    常用的定义方法如下:

    int a=10;
    
    Int *b=&a;//运用取地址运算符
    

    注意:引用不是对象,没有实际的地址,所以没有指向引用的指针!

    指针的值类型:

    1.指向了一个对象;

    2.指向紧邻对象所占空间的下一个位置;

    3.空指针;

    4.无效指针;(不能对无效指针操作,后果无法预计)

     

    利用指针访问对象就是使用解引用运算符“*”,要注意的是解引用操作只能用于已经指向某个对象的指针

    空指针的产生方法:

     

    int* p1=nullptr;
    
    int* p2=0;
    
    int* p3=NULL;//包含头文件cstdlib
    

    注意:在使用指针的时候最好要进行初始化!使用指针前要进行非空判断!

     

      对于指针的赋值中,难以区分的是指针的指向改变了,还是指针指向的对象改变了,很简单的方法就是看“=”的左边是指针还是其指向的对象,简单点可以看其有没有用解引用运算符“*”。对于两个指针可以使用==和!=运算符来判断是否指向了同一个对象,另外指针还可以进行“-”操作,当然在数组中才有意义,减操作能够获取到两个对象之间索引的间隔,对两个指针“+”、“*”、“/”的操作时没有意义的。另外非空指针强制类型转换布尔型为true。

       关于void*指针,该指针可以存放任何对象的地址,但是不能直接使用void* 指针,在使用void*之前必须要进行强制类型转换已确定其指向的对象类型,才能进行相关的操作,简单来说void*指针仅仅代表内存空间,对其内存中存放的对象类型根本不知道。

     

    指针和数组名的区别:

      我们在使用数组的时候经常使用数组名来操作,且数组名代表了数组的首地址,感觉和指针的使用差不多,但其实数组名更包含的该数组的内存信息,指针仅仅是存放了一个地址。但需要注意的是,如果函数需要传入数组来进行操作的化,不能只传入数组名,因为编译器会将其退化成一个指针,所以在需要对数组操作的时候,形参必须要包含数组首地址以及数组长度信息。

     

    以上是目前对于C++中指针的总结,后续会继续补充!

  • 相关阅读:
    基于C#.NET C/S架构的生产看板管理系统软件开发框架平台
    VS.NET后端框架,C#.NET开发的服务器端开发框架
    开源.NET开发架构.NET管理系统框架-原创作品
    开源.NET开发架构 .NET管理系统框架
    基于MVC架构的WebApi服务端开发框架核心优势|C/S框架网原创作品
    基于C#.NET三层架构物流运输管理系统(TMS)-C/S框架网原创作品
    C#Winform+SQL开发的基于C/S架构大型ERP系统
    MES系统框架及MES开源框架|C/S框架网软著产品
    C#.NET程序升级框架之软件版本自动升级系统
    原创C/S应用程序开发平台与.NET快速开发框架
  • 原文地址:https://www.cnblogs.com/chmm/p/7420514.html
Copyright © 2011-2022 走看看