寸有所短,尺有所长。各个语言都有各自的特色和不足,不可以好/坏来评价。应该以自己需求来选择最合适的编程语言。
1、 效率方面:C++注重运行效率,如果对实时性有较高要求,首选C++/C语言。C#写成的代码,都是先被编译成中间语言(IL,Intermediate Language,在运行时,再由即时编译器(JIT,Just-In-Time)编译成本机代码,所以实时性上少欠一筹。
2、依赖性:C++可以生成native(本地代码),不用依赖于.net framework;C#需要相应版本的.net framework支持。
3、可移植性:采用标准C++编写的代码(或使用QT编写的代码)可移植性还是比较强的;采用C#编写的程序目前基本上只能运行于windows系统上,linux平台上有个mono项目用于将C#迁移到linux平台使用,但是目前该项目还有很长的路要走。
4、易用性:C++从C语言过渡而来,对C语言保持了最大的兼容性,熟悉C语言的用户很容易上手,但是也因为这一原因,使C++不是一个纯粹的面向对象的语言。而C#则是一个彻底的面向对象语言。C++中最特色的部分就是指针,但是现在普遍认为应该适度使用指针,因为它太容易出问题了,C++中可以设置全局变量;C#很少使用指针(还存在,在非安全代码中仍使用),没有全局变量。C++中程序员要自行处理对象的析构,容易出错;C#有垃圾回收机制(从java借鉴过来的,其实还有很多东西都像是从java学来的),程序员不用再过分担忧对象的析构了,一切交给系统来处理。初学者C#更容易上手。
5、数据库:大多数数据库软件都为二者提供了相应的访问接口,相对而言C#更容易使用。
6、网页编程:很明显,C#在Web编程上更现代,更灵活,更易用。
7、并行编程:例如nVidia的CUDA并行计算架构只对C++提供了支持,尽管有第三方提供了面向C#的接口,还是使用C++更方便一些。
指针提供了两种访问变量的方法。
通过变量名和通过地址。
用指针就是通过地址来引用变量的。
但地址也必须存储在内存中。所以就用指针变量
来存储变量的地址的。
指针的用处:
1、动态分配空间,但这点在现代语言中已经可以用其他办法代替了
2、提高编程效率
3、增加程序的零活性,可扩展性
即使在最高级的.net中,虽然宣称已经完全抛弃了指针,但仍然可以通过其他方式来实现指针的功能,
指针和数据类型没有什么关系
指针就好象一个指向内存的路牌,路牌和目的地的类型是没有必然联系的
当然,指针用起来比较麻烦,而且容易出错,
指针用好了能加快程序运行效率
不过现在计算机的硬件条件都比较好
对于程序设计来说,执行效率已经远没有业务逻辑重要了