首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++:指针引用区别

目录 前言: 1、引用概念上是定义一个变量别名,而指针是存储一个变量地址。 2、引用在定义时必须要初始化,但是指针没有要求。...5、在sizeof中含义不同:引用结果为引用类型大小,但指针始终是空地址空间所占字节个数(32位平台下占用4个字节,64位占用8字节)。...6、引用自加即引用实体增加1,指针自加即指针向后偏移一个类型大小。 7、多级指针,但是没有多级引用。 8、访问实体方式不同,指针需要显示解引用引用则由编译器自己处理。...9、引用比指针使用起来相对安全。 ---- 前言: 指针引用区别经常在面试中出现, 下面总结出以下区别 1、引用概念上是定义一个变量别名,而指针是存储一个变量地址。...6、引用自加即引用实体增加1,指针自加即指针向后偏移一个类型大小。 7、多级指针,但是没有多级引用。 8、访问实体方式不同,指针需要显示解引用引用则由编译器自己处理。

51230
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 指针引用区别

引用C++对C语言一个补充,它作用是为一个变量起一个别名。...那么从指针引用区别的角度考虑二者特性的话,下面几点: (1)非空区别: 在任何情况下都不能使用指向空值引用, 一个引用必须总是指向某些对象。...(3)可修改区别: 指针引用另一个重要区别是指针可以被重新赋值以指向另一个不同对象。 但是引用则总是指向在初始化时被指定对象,以后不能改变,但是指定对象其内容可以改变。...由于引用声明初始化总是在一起,所以不可能让一个对象引用指向另一个,这完全没有道理,假设a引用c,那么在执行int &c=b;就重定义了,如果执行c = b;,那么只是把b值赋值给c,也就是...p = &b; cout<<c<<endl; cout<<a<<endl; (4)应用区别: 以上特性决定了指针引用一些应用上区别,总的来说,在以下情况下应该使用指针

94680

C++中指针引用区别

C++中,指针引用经常用于函数参数传递,然而,指针传递参数引用传递参数是本质上不同: 指针传递参数本质上是 值传递方式,它所传递是一个地址值。...为了进一步加深大家对指针引用区别,下面我从编译角度来阐述它们之间区别: 程序在编译时分别将指 针引用添加到符号表上,符号表上记录是变量名及变量所对应地址。...虽然使用引用指针都可以间接访问另一个值,但他们之间两个重要区别引用总是指向某个对象,定义引用没有初始化是错误。...引用主要功能是传递函数参数返回值。C++语言中,函数参数返回值传递方式三种:值传递、指针传递引用传递。     以下是“值传递”示例程序。...★条款一:指针引用区别   指针引用看上去完全不同(指针用操作符’*’’->’,引用使用操作符’.’),但是它们似乎相同功能。指针引用都是让你间接引用其他对象。

4.8K82

引用引用区别_强引用引用引用引用区别

void main(String[] args) throws InterruptedException { User user = new User(1, "debo"); // 建立User对象引用...第二次由于分配了较大内存,导致GC,这时候由于内存资源紧张,软引用被回收了,也就是虽然User对象一个软引用引用着它,但User对象在此条件下也会被GC回收。...所以软引用对象在一定条件下可被回收,故软引用对象不会导致内存溢出。...软引用到底有没有被回收,可以通过给软引用一个ReferenceQueue来跟踪,将上面的代码片段稍作修改,如下: import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.2K10

C++指针引用区别

image.png  变量在内存中操作其实是需要经过2个步骤: 找出变量名相对应内存地址。 根据找到地址,取出该地址对应内存空间里面的值进行操作。...2.指针 指针特殊之处在于:指针变量相对应内存空间存储值恰好是某个内存地址。这也是指针变量区别去其他变量特征之一。...指针内存空间表示如下: image.png 3.引用 引用(reference)在C++中也是经常被用到,尤其是在作为函数参数时候,需要在函数内部修改更新函数外部时候。...例如引用定义如下: int x = 5; int &y = x; 4.指针引用区别总结 指针自己一块空间,而引用只是一个别名; 使用sizeof看一个指针大小是4,而引用则是被引用对象大小...但是没有const引用; 指针在使用中可以指向其它对象,但是引用只能是一个对象引用,不能 被改变; 指针可以多级指针(**p),而引用至于一级; 指针引用使用++运算符意义不一样; 如果返回动态内存分配对象或者内存

73510

Java引用、软引用、弱引用、幻象引用什么区别使用场景

引用类型 在Java语言中,除了基本数据类型外,其他都是指向各类对象对象引用Java中根据其生命周期长短,将引用分为4类。...不同引用类型,主要体现是对象不同可达性(reachable)状态对垃圾收集影响。...软引用可以一个引用队列(ReferenceQueue)联合使用,如果软引用引用对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到之关联引用队列中。...弱引用可以一个引用队列(ReferenceQueue)联合使用,如果弱引用引用对象被垃圾回收,Java虚拟机就会把这个弱引用加入到之关联引用队列中。...当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象内存之前,把这个虚引用加入到之关联引用队列中。

61020

C++】C++ 引用详解 ⑦ ( 指针引用 )

; 在 C++ 语言 中 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为 一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 取值符号 * ; 指针引用 就相当于...二级指针 , 其 实现效果 , 等同于 二级指针 ; C++ 编译器 遇到 指针引用 时 , 会自动将 引用指针 转为 二级指针 ; 2、引用本质 - 函数间接赋值简化版本 使用函数进行间接赋值...; 如果将 函数 形参类型 设置为 引用 类型 , 也能达到 间接赋值 效果 ; 引用 实际上是 把 间接赋值 三个条件后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用...还原为 C 语言中 取地址 传入函数 , 在函数内部使用指针访问实参 ; 3、代码示例 - 指针引用 该 函数 参数 是 一级指针引用 , 使用该参数时 可以当做 一级指针使用 , 其效果...等同于 二级指针 ; 其效果等同于上一篇博客 【C++】C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数作用 ) 中 int getStudent(Student** stu

27220

java基本变量引用变量_引用类型值类型区别

Java中数据类型分为两大类:基本数据类型复合数据类型。相应地,变量也有两种类型:基本类型引用类型。 Java8中基本类型变量称为基本类型变量,而类、接口和数组变量时引用类型变量。...这两种类型变量结构含义不同,系统对他们处理也不相同。...1.基本类型引用类型变量 *基本类型(primitive type) 基本数据类型变量包含了单个值,这个值长度格式符合变量所属数据类型要求,可以是一个数字、一个字符或一个布尔值,例如一个整型值是...通过对引用型变量声明实例化语句执行过程分析,可以理解系统对引用型变量上述处理。...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.9K20

c#值类型引用类型区别

值类型对象两种表示方式:未装箱已装箱,引用类型总是处于已装箱 值类型从System.ValueType派生。...该类型提供了System.Object相同方法,但System.ValueType重写了Equals方法, 能在两个对象自断值完全匹配前提下返回true。...由于这个默认实现存在性能问题,所以定义自己值类型时应重写EqualsGetHashCode方法,并提供它们显式实现。....由于不能将值类型作为基类型来定义新值类型或者新引用类型,所以不应在值类型中引用任何新虚方法。所以方法都不能是抽象,所以方法都隐式密封(不可重写)。.引用类型变量包含堆中对象地址。...基于上一条,两个或多个引用变量能引用堆中同一个对象,所以对一个变量执行操作可能影响到另一个变量引用对象。

76620

cjava区别_javac区别

JavaC都是指令式语言(Imperative Language),不同Java面向对象(OO)成分在里面,而C是完全面向过程C高级版本C++、C#支持面向对象。...(推荐学习:java课程) 具体原因是,Java是解释型语言,所有代码都会翻译成统一系统无关bytecode,然后放到JVM上运行;而C是编译式语言,代码要先通过编译器转换成系统相关中间代码...在速度上,C语言编写程序要优于Java,因为Java必须运行在虚拟机环境中,但是因为虚拟机,Java获得平台无关性,而C语言程序可能需要重新修改编译才能实现平台移植。...另一方面,C语言比Java语言更“底层”,因此可以用C编写例如硬件驱动,而Java却不行。JavaC语言还有个明显不同就是C语言注重是算法,但是Java却不一样,想用时候导包就可以了。...Java程序中基本数据类型(boolean,char,byte,short,int,long,float,double),是对对象引用;C语言也有许多种基本类型,还有struct,union,enum

67730

C++ 引用引用作为函数参数

对一个数据建立一个“引用”,他作用是为一个变量起一个别名。这是C++对C语言一个重要补充。...经过声明后b是a别名,ba代表是同一个变量,占内存中同一个存储单元,具有同一地址。 注意&符号作为取地址符合作为引用声明符区别,在上述程序中第2行,&在数据类型后,为引用声明符。...(一个例外,引用作为函数参数时,不需要初始化) (2)在声明一个引用后,不能再使之作为另一变量引用。 (3)不能建立引用数组。...引用作用: C++加入了在C语言基础加入了引用机制,那么引用到底什么用呢?不会只是为了给函数起一个小名吧?显然不是,引用最用要意义在于作为函数参数,以扩充函数传递参数能力。它是如何实现?...这要从C语言参数传递开始说起: 我们知道,C语言在调用函数时,传参主要有两种形式: (1)变量名作为实参形参 这种方式传给形参是变量值,传递是单向

2K40

C++引用

这两天在C语言基础上看了C++了一部分,现在看到了除了C语言可以通过值传递地址传递之外,还可以通过引用放大进行传递。 其意义就相当于给变量起一个别名。...(2).声明时候不需初始化。 (3).初始化之后不能别其他变量再次引用。 (4).不能引用数组。(部分编译器可以,但是这种行为会破环稳定性。) (5).不能建立引用引用。...实践中发现很多这句话真正解释好像于书上不同,而且书上本身例题也是违反了定义。...书上定义: int a=3; int &b=a; int &c=b; 其实我认为这样是对,真正错误是以下形式: int a=3; int &b=a; int &&c=b; 问题:通过引用把三个整数从小到大排列...{ if(a>b)change(a,b); if(a>c)change(a,c); if(b>c)change(b,c); } int main() { int m,

47020

C++引用

C++引用学习: 通常引用第一个作用,人们会想到引用变量别名;(可以说是直接操作这个变量); 引用声明: Type + & + name(可以认为是一个常指针) 注意:(1)&是起标识符作用...2个分号结束时就会指向不明确内存区; main() {   int c = 10; int a = fun3(c); int &b = fun3(c); } /* 运行结果为...( )"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型。...const引用非const引用区别: const引用只读不可修改,绑定对象是否为const无关。...非const引用可读可改,只可非const对象对象绑定; 非const引用只能绑定到引用同类型对象,const引用则可以绑定到不同但相关类型对象或绑定到左值; const引用可以初始化为不同类型对象或者初始化为右值

90040

有关 C++ 指针(*)引用(&)区别的小结

本文最后更新于 232 天前,其中信息可能已经有所发展或是发生改变。 众所周知,C 语言存在一个叫做指针东西,我们可以用指针来指向一个值内存地址,然后进行内存地址各种操作。...但是在 C++ 中,又多了一个叫做引用东西,这二者之间存在着细微差别,通过研读了知乎上一篇文章(下),对于我之前不太明白地方,作出了如下小结: 指针可空,引用不可空 指针可以改变指向,也就是说转而指向其他对象...,但是引用却是不可变 指针本身意义事实上是内存地址,引用本身意义是对象本身 也就是说,这个所谓引用,其实就是 Java 实参中传递那个对象地位,只不过这个引用还可以额外更改对象实参值罢了。...对于 C++ 来说,如果直接传入一个对象,而不是一个对象引用的话,那么 C++ 实际上会调用对象拷贝构造函数,深拷贝一份对象到方法实参 参考文章 C++中指针引用区别 – 知乎

45230

C++】C++ 引用详解 ② ( 引用意义 | 引用本质分析 | 引用常量特征 | 引用所占内存空间指针相同 | 引用C++ 编译器实现 | 引用编译时会自动翻译为常量指针 )

使用 指针符号 * 访问数据 ; 2、引用指针对比 引用 指针示例 : 下面的两个函数 , 分别使用 指针 引用 作为参数 , 二者实现了相同功能 , 性能也相同 ; 但是使用引用 , 可以像操作变量一样操作外部元素...引用 变量 都是相同内存空间别名 , 引用 本身 也占用内存空间 , 引用 所占 内存空间 , 指针 所占内存空间 是相同 ; 验证 引用 所占内存空间很简单 , 只需要在 结构体...上述 Student 结构体 , 占 12 字节 内存空间 , int 类型已知占 4 字节 , 剩余 引用 a b 各占 4 字节 , 指针所占内存空间相同 ; 三、引用C++ 编译器实现...---- 1、C++ 引用是常量指针 综合上述引用特征 : 引用具有常量特征 , 是一个常量 ; 引用变量都是相同内存空间别名 , 其地址都指向内存空间 ; 引用本身也占用内存空间 , 占用大小指针相同...& 引用名称 等同于 下面的 C 语言 " 常量指针 " 指针类型* const 指针名称 C++ 语言中 引用 , 其在 编译器中实现 就是 " 常量指针 " , 因此 引用 占用内存空间

24520

指针引用区别

最后输出是: 1234567890 hello 指针引用主要区别 1 在C++中,指针引用经常用于函数参数传递, 然而,指传递参数引用传递参数是本质上不同...无论你传值还是传指针,函数都会生成一个临时变量, 但传引用时,不会生成临时变量, 当你传值时,只可以引用值而不可以改变值, 但传值引用时,可以改变值, 当你传指针时,只可以改变指针所指内容, 不可以改变指针本身..., 但传指针引用时,即可以改变指针所指内容, 又可以改变指针本身,但传引用主要是它不生成临时变量, 不进行返回值copy等,速度快。...2 在定义区别:例如 指针++ 引用++ 概念是不一样 Q 指针引用各自适用场景是什么?...A: 引用 就是变量 指针分为 指针本身指针指向对象 如果你想修改指针本身就需要用引用 例如char* &p :修改char* 变量指向地址 地址 int main(int argc

70070

C++中引用

C++中引用 注意:(写在前面) 0.引用本质是别名。...3.引用本质: 引用本质是一个指针常量。...指针常量指向不能改变 对于我们,引用只是别名,关于指针、调用、地址等操作都由编译器完成。 4.引用初始化后不能再更改。...int t; t = a; a = b; b = t; }//可以完成交换 int main(){ int a = 1; int b = 2; cout< 2.引用做函数返回 1.不要返回局部变量引用...(第一次调用可以输出局部变量值,因为编译器做了保留;应该是非法操作) 解决方法:在局部变量前加static,存入全局区(全局区数据在程序结束才释放) 2.函数调用可以作为左值 可以通过等号赋值,赋值到函数返回引用指向变量

1.1K20

C++对象成员引用 | 对象成员引用

C++通过对象名成员运算符访问对象中成员 C++不仅可以在类外引用对象公用数据成员,还可以调用对象公用成员函数,但同样必须指出对象名,应该注意所访问成员是公用还是私有的,只能访问public...C++通过指向对象指针访问对象中成员 C++可以通过指针引用结构体中成员,用指针访 问对象中成员方法与此类似。...;//定义对象time指针变量point  p=&time; //使point指向对象time  couthout; //输出point指向对象中成员hour C++通过对象引用变量来访问对象中成员...//time2time1共占同一段存储单元,因此time2.hour就是time1.hour。...,就给小林点个赞叭,这样小林也有更新下去动力,跪谢各位父老乡亲啦~ C++对象成员引用 | 对象成员引用 更多案例可以go公众号:C语言入门到精通

2K64
领券