欢迎光临散文网 会员登陆 & 注册

C++中关于指针的知识点

2023-07-14 22:33 作者:虚幻TA超神之路  | 我要投稿
  1. 什么是指针

    在C++中,每定义一个变量,系统就会给变量分配一块内存,内存相当于系统为存放变量开辟的房间,而且内存是有地址的,可以把地址理解成为门牌号。指针就像是把钥匙,能够打开与之匹配的大门。所以通过指针,你能访问与之相对应的内存空间,修改里面存放的数据。在C++中用*(星号)表示指针。

    同时,*运算符被称为间接值或者解除引用(解引用)运算符,它用与指针,可以得到该地址的内存中存储的值,*也是乘法符号,C++根据上下文来确定*的具体含义。


  2. const修饰指针

    1)常量指针:const 数据类型 *变量名

             含义:不能通过解引用的方法修改内存地址中的值,用被指向的变量名可以改

    2)指针常量:数据类型 *const 变量名(能改值,不能改指向)

             含义:指向的变量不可改变,但可以修改内存地址中的值

    3)常指针常量:const 数据类型 *const 变量名(值和指向都不能改)

             含义:指向的对象不能改变,也不能通过解引用的方法修改内存地址中的值


  3. 什么是二级指针

    1)用于存放指针变量的地址

    2)二级指针的语法:数据类型 **指针名

    3)应用场景:在函数中,如果传递普通变量的地址,形参用指针;传递指针的地址,形参用二级指针。把普通变量的地址传入函数后可以在函数中修改变量的值;把指针的地址传入函数后可以在函数中修改指针的值。


  4. 什么是空指针

    2)C和C++中用0或NULL都可以表示空指针,C++11中nullptr也可(建议这样写)

    2)注意:如果对空指针解引用,程序会崩溃,所以一定要判空。在内存释放后,应将指针指向空


  5. 什么是野指针

    1)野指针就是指针指向的不是一个有效的地址,访问野指针可能会造成程序崩溃

    2)野指针出现情况: 指针在定义的时候,没有进行初始化,值不确定;若指针指向了动态分配的内存,内存被释放以后,指针没有置空,但指向的地址已经失效;指针指向的变量已超越变量作用域(变量的内存空间已被系统回收)

    3)规避野指针的方法:指针在定义的时候,如果没地方指,就初始化为nullptr;动态分配的内存被释放后,将其置为nullptr;函数不要返回局部变量的地址;使用智能指针


  6. 函数指针

    1)使用步骤:1.声明函数指针 2.让函数指针指向函数的地址 3.通过函数指针调用函数声明函数指针时,必须提供函数类型,函数类型是指函数的返回值和参数列表

    2)语法:

              int func(int a,string b);

              int (*pfunc)(int,string);

              pfunc = func;


  7. 指针的算数

    指针变量+1后,增加的量等于它指向的数据类型的字节数


  8. this指针

    1)每个成员函数(包括构造函数和析构函数)都有一个this指针,可以用它访问调用者对象的成员。

    2)this指针存放了对象的地址,它被作为隐藏参数传递给了成员函数,指向调用成员函数的对象(调用者对象)


C++中关于指针的知识点的评论 (共 条)

分享到微博请遵守国家法律