• C++ 指针vs引用
  • 指针和引用
  • C++中的指针是保存另一个变量的内存地址的变量。
  • 引用是已存在变量的别名。一旦引用初始化为变量,就不能将其更改为引用另一个变量。因此,引用类似于常量指针。
  • 关键差异
  • 指针
  • 指针在声明后可以随时初始化为任何值
  • python文件指针可以当作参数传参吗 指针 python_c++

  • 可以将指针赋值为指向NULL值
  • 指针需要用" * " 解引用
  • 指针可以更改为指向任何相同类型的变量
  • 引用
  • 引用在声明时必须初始化
  • python文件指针可以当作参数传参吗 指针 python_c++_02

  • 引用不能为NULL值
  • 引用可以简单地按名称使用
  • 一旦引用初始化为变量,就不能将其更改为引用变量对象
  • C++ vs Python 之引用
  • 前言
  • 对于重复性的事物和概念,我们往往会使用简化的术语来表示,这样可以做到统一,降低沟通成本, 试图将已建立的术语与其它编程语言相匹配, 就如线程 thread 之于C++,Java和Python。但是!!! Python中的"引用"概念与在C++的引用完全是两回事
  • C++的引用
  • 引用就是变量的别名,对引用的操作与对变量的直接操作一致。定义一个引用时,必须被初始化,绑定到一个变量对象上。绑定之后,无法令这个引用重新绑定到另外的变量对象上。
  • 例中,整形变量 a 的地址和引用 ra 的地址相同。引用是对象的别名,指向已经存在的对象,编译器一般不会为引用分配内存。使用 sizeof(ra) 获取到的也只是引用指向对象 a 的内存大小。
  • Python的引用
  • 与C++不同,Python中的引用是通过赋值 = (assignment) 隐式实现的。Python中的引用还可以重新指定引用的对象,改变其中任何一个变量的引用,都不会影响其它变量对原对象的引用
  • python文件指针可以当作参数传参吗 指针 python_c++_03

  • a 和 ra 指向同一个对象 1024,两者都是对同一个对象 1024 的引用。ra 引用新的对象 b,a 仍然引用对象1024。在C++中对引用重新赋值,相当于对原对象赋值,而在Python中则是更改引用的对象。
  • python文件指针可以当作参数传参吗 指针 python_指针_04

  • 按值传递和按引用传递都不能准确的表示Python的传参方式,通过查找资料,发现Python使用一个新的术语来表示参数传递方式,传递对象引用(pass by object reference)或者对象引用按值传递(Object references are passed by value)。
    函数接收内存中与调用者使用的相同对象的引用,但是函数接收的引用和调用者的引用不是同一个。就跟传值(pass by value)一样, 函数创建了一个属于自己的指向对象的引用。