C和C++和Java的一些区别

       今天我想写一些关于我这些天所学到的C和Java的区别。这几天白天老师讲Java,可我为了考研,手里捧着《C语言程序设计》,然而我在大学里是C++入门的,故脑子里的体系结构大都是C++的。这就导致了,我现在宛如一个智障。老师每讲一个Java的知识点,我都在想C++里是啥样的,然后再看看手里的书,看看C语言又是啥样的,简直头晕。这几天我清醒了不少,所以我打算整理一下我这几的收获。

1.C是面向过程的,Java是面向对象的。Java里面有类,C里面没有,C++里面有,C++里面的结构体可以写函数,C不行。总而言之,C语言就别拿面向对象的思路写代码,等于白给。

2.C跟C++有指针,Java没有。这个显而易见。

3.Java,C,C++中,只有C++有引用传递。

4.C++的模板与Java中的泛型很像。但是还是有区别的。C++ 模板是宏命令,比如List<A> 和 List<B> 实际上是两个不同的类。而Java 泛型类中,类型 ArrayList<Integer> 和 ArrayList<String> 的对象共享相同的类,并且只存在一个 ArrayList 类。编译器实施类型约束,并且运行时没有关于泛型的类型形参的任何信息,是通过擦除 来实现的。

5.一个小细节,C里面声明数组是int a[10];  而Java中则是int[] a=new int[10];或者int a[]=new int[10]; 这就导致用习惯Java的第一种写法可能就下意识写错C的数组。QAQ

6.C语言中函数随便声明在哪都行(比如main函数在上面,被调用的函数在main函数下面),但是C++中要使用必须先声明,即,声明必须在调用上面。当然,如果C如果不声明,一旦函数有问题就会出现运行错误,反之就只是语法错误,即还是建议该声明就不要省。

7.C语言中,用数组元素作实参中,向形参变量传递的是数组元素的值,而用数组名作函数实参时,向形参(数组名或指针变量)传递的是数组首元素的地址。

8.C与C++函数原型的区别:f();与f(void);在C++中是完全一样的,因为C++的函数原型不准省,属于说一不二那种。但是C里面函数原型是可以省略参数的,所以在C看来f();是极有可能有参数的,而f(void);则是完全不含参数的。

9.C++中支持带有默认参数的函数,Java则不支持。Java中是利用函数的重载来实现类似的功能的。其中考虑的原因是:如果函数的重载和带有默认参数的函数一起使用时,有可能引起二义性。如,void a(int r=0,int x=0,int y=0);与void a(int r);同时使用,当调用a(20);时,编译系统无法判断调用哪个函数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xrn1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值