c语言中有指针 java中没有指针_为什么别的语言中没有像C语言一样有指针?

指针简单的说就是一个指向对象的东西,对于大部分语言来说,都用引用和托管指针来代替它了。甚至 C++ 里也有引用。引用和指针最重要的区别,是是否可以为空,以及是否能修改指向的对象,引用一般是不能为空和改指对象的,因此像 Java 这样的语言里,其实到处是指针。

Object obj= new Object();

Object sec= obj;

sec = new Object();

如果你去仔细研究他们的行为,就回发现 obj, sec 都只是一个指向对象的东西,可以为空,也可以修改指向,所以它们其实都是指针,只是 Java 的教材里没这么教而已。

C/C++ 和其他语言不同的地方,是指针是可以“计算”的,实际上它的指针实现,就是实际的内存地址,因此它是可以随意修改,并且类型也能通过强转随便转,灵活性太大的后果,就是太容易误用,造成飞指针,导致程序崩溃。如果是早期的操作系统,或者程序运行的权限比较高(比如驱动),甚至可能改写操作系统本身,导致操作系统崩溃什么的。

因此,后期设计的语言,都刻意避免可以随意计算无控制的指针,而改用不能计算(类似 Java 里这种)的指针来替代,并且顺便在教材里改了名字,所以才让题主误以为其他语言没指针了。

最后,由于操作系统和高效率软件都必须要用到可计算指针,所有它们才大多用 C/C++ 来编写。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值