千家信息网

Python与C++引用的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关Python与C++引用的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在用Python写建二叉树的代
千家信息网最后更新 2026年11月01日Python与C++引用的示例分析

本篇文章给大家分享的是有关Python与C++引用的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在用Python写建二叉树的代码的时候遇到了这个问题,原因就是把Python的"引用"与C++的"引用"搞混了,这两种语言中都有"引用"名词,虽然大部分时候很像,其实还是有区别的。这里记录一下,注意,这里只是我自己的一点个人理解,在找到更好的理解之前,先这样理解吧!

例子,这是我的两段根据先序序列创建二叉树的代码:

# 正确pos = 0def create(seq):    global pos    ch = seq[pos]    pos += 1    if ch == '#':        return None    else:        temp = TreeNode(ch)        temp.left = create(seq)        temp.right = create(seq)        return temp seq = "abd###ce###"root = create(seq)

还有这个:

# 错误def create(root):    global pos    if(seq[pos]=='#'):        root = None        pos += 1        return    root = TreeNode(seq[pos])    pos += 1    root.left = None    root.right = None    create(root.left)    create(root.right)

看起来只是有无返回值的区别,实际上第二段代码是错误的,其实从第二段代码的思路来说,在C++里面可以这样写:

void create(tree & t){    char ch = str[pos++];    if(ch=='#'){        t = NULL;        return;    }    t = new node;    t->val = ch;    create(t->left);    create(t->right);}

这就是Python中与C++的引用的区别了。
我是这样理解的:Python中对内存的使用更像是不可改变的,对于一个引用所指向的对象,如果我要修改值,那么会先新找一块内存,赋值,然后将引用指向这个新的内存块,这样就是修改了引用指向的位置,但是在C++中则是直接在引用所指向的内存块上改变,例如:

Python:a = 1print(id(a))a = a+1print(id(a))# 输出140708803374848140708803374880

在C++中:

int t = 1;int & a = t;printf("%d    %d\n", &a, a);a += 1;printf("%d    %d\n", &a, a);# 输出7208712    17208712    2

所以,就像上面的第二段代码,我传入了创建的树根的引用,但是当树的结构发生改变的时候,实际上是改变了存储的位置,这样原本的函数外面创建的root引用指向的其实还是原来的空内存块(突然觉得好傻。。就像被偷光了,还在等一样。。。),但是C++的引用就是很倔强地只认那一块内存,所以就可以直接改变使用了。
关于Python中引用与对象的关系,还牵扯到一些内存之类的知识,例如:

a = 1b = 1print(id(a))print(id(b))# 输出140708803374848140708803374848

这里是因为Python中为了节省内存,会将一些短小的字符串以及数字进行缓存,这样就会节省这类对象的建立销毁的开销了。
其它的就还有关于可变数据对象(mutable)和不可变对象(immutable)了,这个我之前也记录过。总有些语言看起来很简单,但是实际上还是要好好理解的啊。

以上就是Python与C++引用的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

C++ 内存 代码 对象 就是 指向 实际 实际上 时候 知识 还是 二段 输出 示例 分析 位置 只是 更多 篇文章 语言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 金融科技还是互联网 互联网科技视频 互联网金融科技委员会 互联网科技公司的市场部门 成都玖崟互联网科技有限公司乐商圈怎么样 西藏七维空间互联网科技有限公司 厦门比较好的科技互联网公司 互联网科技扶贫时间 西安小鹰速贷互联网科技有限公司 长沙茂晟互联网科技有限公司 烟台灵鸽互联网科技有限公司 高科技互联网套路 互联网金融科技元年 互联网科技实习生岗位 梅州GM互联网络科技有限公司 江苏互联网科技小贷 互联网科技企业商标注意事项 西安左小互联网科技有限公司 互联网科技大佬云集 网络科技有限互联网 四川狮子座互联网科技 互联网科技类展会 互联网汽车科技小镇 青岛中康互联网医疗科技有限公司 互联网金融中的现代科技 玉溪互联网科技怎么选 图游互联网科技 南京一网一红互联网科技有限公司 云鲸互联网络科技有限公司
0