当前位置: 首页 > news >正文

新手须知 C、C++和VC++之间的区别

本文目地

本文介绍的是C、C++、VC++ 三者之间的区别,也许作为初学者来说,会很容易混淆。希望通过本文的介绍,能够给你带来帮助。

C语言

C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代。由于它的设计有很多优点,多年以来深受广大程序设计人员的喜爱,并逐渐 淘汰了很多其它程序设计语言。我们平时使用的大多数软件都是用C语言开发的。

很多后来出现的一些语言也沿用了很多它的东西。C语言的编程方式是一种称为面 向过程的开发方式。也就是说,解决问题的时候,程序员需要思考计算机应该如何一步一步完成这个问题,然后将相应过程转化为代码。

当软件变得越来越复杂,代码越来越长的时候,一个人的脑力有限,用面向过程的方法很难开发,往往写着后面的,就忘了前面写 了什么了。而且复杂软件往往需要很多人协同开发,更加大了开发难度。一种称为面向对象的软件开发方法应运而生。面向对象的思想用几句话很难说清楚。

C++的出现

国内的计算机教材在讲到这里的时候往往也都说不清楚什么叫面向对象。这个词语也许只能意会不能言传吧。需要开发过一些相关软件才能领会。这里还是不具体说了吧。 C语言不是面向对象的,而程序员又离不开C语言,因此有人在C语言的基础上添加了面向对象的功能,就是C++.同时,C++修改了C语言中一些不方便的规 定,使C语言用起来更方便了。

这里需要注意两点

1.谭浩强那本著名的<<c程序设计>>后面用了几张篇幅简要介绍了C++,但是他讲的C++只是上面提到的修改C语言不方便的规定,涉及到面向对象的内容一点没有。

C和C++的编程思想不一样

2.C++是在C语言的基础上发展来的,但是并不是C++比C语言高级,两者的编程思想不一样,应用的领域也不一样。在各自的领域,谁也不能替代谁。

Visual C++的诞生

windows操作系统出现以后,开发windows平台的图形界面程序成为一大难题。用C语言虽然能开发,但是程序员要花费很大的精力处理图形界面。同时,windows平台图形界面的程序又都有很多相似点。为了解放程序员,让他们把精力主要放在程序功能上,而不是放在图形界面上,microsoft公 司推出了visual系列软件开发环境,包括为C++程序员提供的Visual C++.程序员能用C++语言在其上开发图形界面的软件。微软随Visual C++提供了很多用于显示Windows界面的库函数。可以说Visual C++就是C++加上windows图形界面。

Visual C++假设用户已掌握C++

那是不是想学C++和C语言的话,只要去学Visual C++就行了呢?大错特错!市面上任何一本Visual C++教材都是假设用户已经掌握了C++语言,重点在讲和Windows程序设计相关的东西,而且往往都要讲MFC.没有C++基础,根本无法理解MFC 的任何东西。

很多人急功近利,觉得花费半年甚至一年时间学习C++.连个图形界面的程序都开发不出来,太不划算。这种想法也是错误的。世界上的软件只有一部分具有图形 界面,运行在Windows平台,需要用Visual C++开发。学好了C++,即使不学Visual C++,也是大有作为的。

Visual C++做了很多封装

还有很多人,要学C++或者C语言,先整个Visual C++装上。其实这是一种误区。Visual C++操作复杂,而且帮助开发者做了很多事情。对于初学者来说,操作复杂的话要花很多时间用在掌握Visual C++的用法上。帮开发者做的那些事情,往往是初学者需要了解的,自己亲手做一下,对学习更有好处。

再说了,大家装的往往都是非法版本,这种事情不是人家不追究就万事大吉了。自己良心有愧啊。大家学软件还不是为了挣钱,可是自己却不尊重前辈的劳动成果,真是无耻啊。

本人建议C语言和C++的初学者,上机练习最好用自己喜欢的代码编辑器写好后用GCC编译,对以后的深入学习大有好处。还是那句话,理论加实践才是最好的老师。

 

注:本文转自:http://developer.51cto.com/art/201107/275818.htm

转载于:https://www.cnblogs.com/zhaoqingqing/p/3995043.html

相关文章:

  • Linux权限、用户以及文本处理的一些相关命令
  • git clone,git push,git pull
  • 对话巨杉核心研发团队:分布式数据库自研之路
  • 用NetHogs监控Linux每个进程的网络使用情况
  • 328
  • 学习Android的一些笔记
  • [PTA]数组循环右移
  • 国庆节
  • AI产业化需结合云计算、大数据
  • 前后端分离实践(EOS篇)
  • 备份和还原邮件(01)
  • 【进阶修炼】——改善C#程序质量(1)
  • Ubuntu端口开放
  • 二叉树详解
  • Photoshop打造唯美的蓝色古装外景人物图片
  • ES6指北【2】—— 箭头函数
  • JavaScript类型识别
  • Java到底能干嘛?
  • Java读取Properties文件的六种方法
  • js正则,这点儿就够用了
  • linux安装openssl、swoole等扩展的具体步骤
  • node 版本过低
  • Phpstorm怎样批量删除空行?
  • Python连接Oracle
  • Rancher-k8s加速安装文档
  • 服务器从安装到部署全过程(二)
  • 理清楚Vue的结构
  • 前端性能优化——回流与重绘
  • 深入浅出webpack学习(1)--核心概念
  •  一套莫尔斯电报听写、翻译系统
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 阿里云API、SDK和CLI应用实践方案
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #微信小程序:微信小程序常见的配置传旨
  • $.proxy和$.extend
  • (02)vite环境变量配置
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)模仿学习-Action数据的模仿
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (算法)N皇后问题
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Sql Server 保留几位小数的两种做法
  • (转)大道至简,职场上做人做事做管理
  • (转载)hibernate缓存
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .Mobi域名介绍
  • .NET DataGridView数据绑定说明
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .Net IE10 _doPostBack 未定义
  • .net 发送邮件