C++的指针和Java中的引用比较像,在作为函数参数传递时,都可以在函数内部改变 ”外部“ 的值

C++的引用使用时必须是初始化的,他是一段内存的别名,因此也可以在函数内部改变”外部“的值,但是有一点不同是,它作为参数传递时在函数内部不能改变其本身的指向

C++ 代码:

#include

using namespace std;

class Test {

public:

Test(int num) {

this->num = num;

}

public:

int num;

};

void change1(Test & t) {

t.num = 2;

// t = new Test(3); // 报错: 引用再次赋值

}

void change2(Test *t) {

t->num = 2;

t = new Test(3); // 指针再次赋值,指向新内存

}

int main(int argc, char const *argv[])

{

Test t = Test(1);

cout << "------引用---------" << endl;

cout << t.num << endl;

change1(t);

cout << t.num << endl;

Test *t2 = new Test(1);

cout << "------指针---------" << endl;

cout << t2->num << endl;

change2(t2);

cout << t2->num << endl;

return 0;

}

输出:

------引用---------

1

2

------指针---------

1

2

Java 代码:

class Test {

public int num;

Test (int num) {

this.num = num;

}

}

public class Learn {

public static void change(Test t)

{

t.num = 2;

t = new Test(3); // 引用 t 再次指向新对象,更像是 C++ 中的指针

}

public static void main(String[] args) {

Test t = new Test(1);

System.out.println(t.num);

change(t);

System.out.println(t.num);

}

}

输出:

1

2

java 指针 引用_C++中的指针和引用与Java中的引用区别相关推荐

  1. printf 指针地址_c语言对指针的理解

    先来讲一下本人学指针的经历:大一的时候刚接触c语言对指针这东西真的是太迷了,感觉麻烦难懂不想其他语言一样.但是搞懂以后就被指针的魅力吸引甚至喜欢上c语言.不多讲,开始!(文章可能有些长,但放心全是基础 ...

  2. gorm存指针数据_C语言重点——指针篇(一篇让你完全搞懂指针)

    一. 前言 C语言是比较偏底层的语言,为什么他比较偏底层,就是因为他的很多操作都是直接针对内存操作的. 这篇我们就来讲解C语言的一大特点,也是难点,指针和指针操作. 这篇文章我会先从基本类型的存储过程 ...

  3. C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  4. Java中的引用与C中的指针

    C 指针就是一个值,而这个值是某块内存的地址,通过这个值,就可以找到这块内存 C语言的指针具有以下特点: C语言的指针可以指向内存的任何地方 C语言的指针可以参与数值运算,加法.减法 C语言的指针还可 ...

  5. c6011取消对null指针的引用_C++中的引用

    当变量声明为引用时,它将成为现有变量的替代名称.通过在声明中添加"&",可以将变量声明为引用. #include using namespace std; int main ...

  6. java 指针 引用_java中的引用与c中的指针

    指针 首先要弄清楚指针和c中的指针是不一样的,前者是概念,后者是具体实例. 换句话说,C中的指针只是指针中的一种,其他语言也有指针,比如C++.但是我们同别人交流的时候,大都不会从概念上去交流,一般会 ...

  7. c6011取消对null指针的引用_C++中的野指针及其规避方法

    今天在调试程序过程中,用到了一些指针的方法,这里记录一下野指针的概念. 1.概念 野指针,也就是指向不可用内存区域的指针.通常对这种指针进行操作的话,将会使程序发生不可预知的错误. 野指针与空指针(N ...

  8. java int 指针_如何在Java中使用指针?

    小编典典 Java中的所有对象都是引用,你可以像使用指针一样使用它们. abstract class Animal {... } class Lion extends Animal {... } cl ...

  9. java 指针定义_Java中关于指针的个人理解

    大一学生刚刚开始学习Java,很多概念性的东西或者名词不严谨,有错误的地方还望各位大神指正,写的都是自己的一些想法,便于我自己的记忆. 我学习Java一开始很费解,然后自己的一个方法就是把一些全新的概 ...

最新文章

  1. spring aop源码实现分析
  2. Java输出彩色字符
  3. 《学习之道》第七章总结
  4. 信息安全工程师笔记-云计算安全需求分析与安全保护工程
  5. c语言 k最近邻分类算法代码,实验二 K-近邻算法及应用
  6. 考研英语真题笔记 2020
  7. cdr圆形渐变填充怎么设置_玩出新花样|渐变应用于形状
  8. 【元胞自动机】基于matlab保守策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型【含Matlab源码 1294期】
  9. AllenNLP框架学习笔记(模型篇之保存与加载)
  10. 数据分析与Excel
  11. macbook 连接不上蓝牙鼠标 m585 m590 解决方法
  12. WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
  13. 使用axios发送get和post请求
  14. c#输出二维数组矩阵
  15. 网易 七鱼 面试 java_reactJs微信端接入网易七鱼客服
  16. C/C++ BeaEngine 反汇编引擎
  17. 适用于Windows/Mac的最好视频剪辑软件
  18. RTX3060+ubuntu20.04+cuda11.1+cudnn8.0.5+pytorch1.7.1+tensorflow2.4构建深度学习环境
  19. R语言对多个数据框的相同列进行操作
  20. selenium_采集药品数据

热门文章

  1. flex mx:TabNavigator进行选项卡切换,需要进行交互时。发生Error #1009错误
  2. 终极破产的原因——20年玩儿钱与玩观念的的新经济
  3. 什么是康奈尔笔记法?
  4. 哪些因素影响大数据的发展
  5. 物联网卡就是流量卡 这说法正确吗
  6. Scala学习(一、环境配置和基础)
  7. 一个mapper接口有多个mapper.xml 文件_MyBatis 源码解析:映射文件的加载与解析(上)
  8. dosbox edit.exe 如何使用_微软软件如何激活?这个神器分享给你!
  9. Java编程基础 - 泛型
  10. struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】