python指针引用的区别_C++基础:指针和引用的区别
C++基础:指针和引用的区别
*例
int a;
int &b = a;
其中b是a的引用,b引用了a,a被b引用。b 相当于 a 的别名,对 b 的任何操作就是对a的操作。所以b既不是a的拷贝,也不是指向a的指针,其实b就是a它自己。引用的规则:引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL)。
一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。
引用的主要功能是传递函数的参数和返回值。
C++ 语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。成员函数的值传递
void FuncV(int x)
{
x = x + 10;
}
...
int n = 0;
Func1(n);
cout << "n = " << n << endl; // n = 0
由于 FuncV 函数体内的 x 是外部变量 n 的一份拷贝,改变 x 的值不会影响 n, 所以 n 的值仍然是 0。成员函数的指针传递
void FuncP(int *x)
{
(* x) = (* x) + 10;
}
...
int n = 0;
Func2(&n);
cout << "n = " << n << endl; // n = 10
由于 FuncP 函数体内的 x 是指向外部变量 n 的指针,改变该指针的内容将导致 n 的值改变,所以 n 的值成为 10。成员函数的引用传递
void FuncR(int &x)
{
x = x + 10;
}
...
int n = 0;
Func3(n);
cout << "n = " << n << endl; // n = 10
由于 FuncR 函数体内的 x 是外部变量 n 的引用,x 和 n 是同一个东西,改变 x 等于改变 n,所以 n 的值成为 10。
总结
对比引用传递、值传递和指针传递的示例可知,引用传递和指针传递的性质基本一样,而引用的传递调用方式更像"值传递"。
引用传递与指针传递的功能相似。
但指针能够毫无约束地操作内存中的任何东西,虽然指针功能强大,但是非常危险。
在程序中如果只需要借用一下程序的别名尽量用引用传递。
若你对人工智能(CV/NLP)、C++/python编程、互联网就业及发展有兴趣,欢迎点赞关注和收藏。谢谢鼓励!!!
C++相关知识:Anxjing.AI:C++ this_thread::sleep_forzhuanlan.zhihu.com
Anxjing.AI:C++ Lambda表达式zhuanlan.zhihu.comAnxjing.AI:C++并发_condition_variablezhuanlan.zhihu.comAnxjing.AI:生产者-消费者模型zhuanlan.zhihu.comAnxjing.AI:C++预处理指令zhuanlan.zhihu.comAnxjing.AI:C++工具:Cmakezhuanlan.zhihu.comAnxjing.AI:SSH 学习zhuanlan.zhihu.comAnxjing.AI:记录C++阶段性学习一zhuanlan.zhihu.comAnxjing.AI:DesignPatterns C++:单例模式zhuanlan.zhihu.comAnxjing.AI:C++基础:map简析zhuanlan.zhihu.comAnxjing.AI:C++基础:memset函数简析zhuanlan.zhihu.comAnxjing.AI:C++基础:break&continue区别zhuanlan.zhihu.comAnxjing.AI:C++基础:指针和引用的区别zhuanlan.zhihu.comAnxjing.AI:C++中::和:, .和->的作用和区别?zhuanlan.zhihu.comAnxjing.AI:string中c_str()的使用方法和特性zhuanlan.zhihu.comAnxjing.AI:C ++ strcpy()和strncpy()函数zhuanlan.zhihu.comAnxjing.AI:C++基础-关键字virtualzhuanlan.zhihu.comAnxjing.AI:C++基础-函数重载zhuanlan.zhihu.comAnxjing.AI:C++基础-staticzhuanlan.zhihu.comAnxjing.AI:C++基础:判断文件是否存在的方法zhuanlan.zhihu.comAnxjing.AI:C++基础-strstr查找子串zhuanlan.zhihu.comAnxjing.AI:C++基础:std::thread多线程zhuanlan.zhihu.com
python指针引用的区别_C++基础:指针和引用的区别相关推荐
- 对指针变量取地址_C语言指针简介(amp;和*运算符)
取地址符(&) 和 取值符(*) (1)& 运算符 :用于取一个对象的地址 例如:int *p; p = &c; 将c的地址赋值给指针变量p,我们称p为 &quo ...
- this指针作为函数参数_C++以指针作为函数参数(学习笔记:第6章 10)
以指针作为函数参数[1] 为什么需要用指针做参数? 需要数据双向传递时(引用也可以达到此效果) 用指针作为函数的参数,可以使被调函数通过形参指针存取主调函数中实参指针指向的数据,实现数据的双向传递.( ...
- c语言和java语法的区别_c语言和java语法有区别吗?
c语言和java在语法上有区别,区别是: 1.C语言有指针,java没有指针: C语言的语法比较简单,但是它的亮点指针很容易出错,想要好好的运用指针是件很难的事情,用好了,对程序有很好的帮助,反之,就 ...
- pascal和python的区别_C语言和Pascal语言的区别,要详细。
展开全部 C 和 Pascal 曾经不太像,但是越来越像. 现代 C 语言借32313133353236313431303231363533e59b9ee7ad9431333236386134鉴了很多 ...
- python语言与c语言java的区别_c语言和java有什么区别
区别:1.单文件的编译时间java比C语言快:2.C语言可以直接操作内存,java不能直接操作:3.C语言可以封装动态库,java不行:4.C语言有指针,java没有指针:5.C语言可以直接操作串口, ...
- c++和c语言的区别_C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂...
差不多是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输 ...
- php和js操作数据库的区别,PHP基础与JS操作的区别
嵌入页面方式 JS嵌入方式: PHP嵌入方式:<?php ?>(常用) 输出语法 Javascript输出 1.alert("警告的内容") 2.prompt(&quo ...
- 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)
2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...
- 指针和引用的区别_浅析指针与引用
关注"杜明c",每天进步一点点! 已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒今天给大家聊一聊指针和引用的不同之处在哪里. 摘要 指针的使用 引用的使用 二者的区别 后话 ...
最新文章
- JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)
- 微软:明明修复了Bug,你们还把我骂上热搜?
- POJ - 1655 Balancing Act(树的重心)
- com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGI
- 第二天:装饰模式及面向对象设计原则4则
- 【ArcGIS微课1000例】0016:ArcGIS书签操作(添加书签、管理书签)知多少?
- 【超详细】在Linux上远程登录遇到的若干问题及解决方法(一)
- hdu-1173(最短距离)
- 手算KMP算法next数组
- 生活没那么复杂,“不要脸”就对了
- PCL法线计算及原理
- N76E003合并boot和app
- 大数据周会-本周学习内容总结04
- 2023年全国最新会计专业技术资格精选真题及答案59
- Chinese Dragon
- JS打印三角形排列、四边形排列和菱形排列
- 所有的事情都会趋于平淡
- 随机噪声的压制c语言,一种地震数据随机噪声压制方法及装置的制造方法
- 用matlab实现运筹学最短路问题,运筹学 最短路问题.ppt
- qt creator 运行 出现 “can not open .... jom for write 解决方案
热门文章
- 一些我工作中经常使用的C4C ABSL代码片段
- SAP UI5 bindProperty
- how is metadata got - DB table iwfndi_med_srh and IWFNDCL_MGW_REQUEST_MANAG
- replication debug for PRODUCT_MAT
- Jerry制作的软件工程里Design for Change的培训材料
- IBASE and ES change pointer
- bgrfc entry point
- SAP UI5的calendar 日历控件
- S/4HANA服务订单Service Order的批量创建
- 点击了SAP CRM HANA report超链接,背后都发生了什么