您的位置:首页 > 编程语言 > C语言/C++

Java的引用和C++的指针的区别

2017-03-11 18:49 232 查看
Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,但是他们在实现、原理、作用的方面却有区别

(1)类型:引用其值为地址的数据元素,Java封装了的地址,可以转成字符串查看,长度可以不必关心;C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。

(2)所占内存:引用声明时没有实体,不占空间。C++指针如果声明后会用到才会赋值,如果用不到不会分配空间。

(3)类型转换:引用的类型转换,也可能不成功,运行时抛出异常或编译就不能通过。C++指针只是一个内存地址,对程序来说还都是一个地址,但可能所指的地址不是程序想要的。

(4)初始值:引用初始值为java关键字null;C++指针是int,如不初始化,俗称为“野指针”,十分危险。

(5)计算:引用是不可以计算的,C++指针是int,可以计算。

(6)控制:C++指针可以计算,不容易控制。

(7)内存泄漏:Java引用不会产生内存泄漏。C++指针容易产出内存泄漏,要小心使用,及时回收。

(8)作为参数:Java的方法传参只是传值,引用作为参数使用时,会给函数内引用的COPY,所以在函数内交换两个引用参数是没用意义的,因为函数只是交换参数的COPY值,但在函数内改变一个引用参数的属性是有意义的,因为引用参数的COPY所引用的对象和引用参数所引用的对象是同一个对象(有点拗口!)。C++指针作为参数给函数使用,实际上就是它所指的地址在被函数操作,所以函数内使用指针参数的操作将直接作用到指针所指向的地址。

本质上,他们都是想通过一个叫做引用或指针的东西,找到要操作的目标,方便在程序中操作,所不同的是Java的办法更安全、方便一些,但失去了C++的灵活,也算是对指针的一种包装和改进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: