指针和引用的区别

  • 指针有自己的一块空间,而引用只是一个别名;
  • 使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;
  • 作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引 用的修改都会改变引用所指向的对象;
  • 可以有const指针,但是没有const引用;(具体解释看评论区)
  • 指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能 被改变;
  • 指针可以有多级指针(**p),而引用止于一级;
  • 指针和引用使用++运算符的意义不一样;
  • 如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄露。

发表评论

后才能评论

评论(5)

  • 周鑫 普通 2022-07-24 5:15 下午

    如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄露。

    这句话怎么理解呢

  • zjk 普通 2021-10-05 11:09 上午

    引用的本质还是一个指针常量,常引用相当于一个指向常量的指针常量

  • 柴小超 普通 2021-09-09 9:52 下午

    引用为什么不能是const呢?函数传参不是经常这样写吗? void func(const string& str) { /* do something */ }

    • 帅地 永久会员 @ 柴小超 2021-09-12 1:59 下午

      引用可以指向常量,也可以指向变量。例如int &a=b,使引用a指向变量b。而为了让引用指向常量,必须使用常量引用,如const int &a=1; 它代表的是引用a指向一个const int型,这个int型的值不能被改变,而不是引用a的指向不能被改变,因为引用的指向本来就是不可变的,无需加const声明。即指针存在常量指针int const *p和指针常量int *const p,而引用只存在常量引用int const &a,不存在引用常量int& const a。

  • 将不负卿 普通 2021-08-27 3:24 下午

    引用必须初始化