零基础学习C/C++需要注意的地方

谈及C/C++,功能强大、应用广泛,一旦掌握了后,若是再自学其他语言就显得轻而易举了。那为什么学C/C++的人少呢?很多人认为C/C++虽然博大精深,但也难学。其实就本人认为C/C++并非是“difficult(困难)”的,只要你能理清思路,掌握它的精髓,配合一套教材。那么学C/C++是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习C/C++或者说学习C/C++应从哪几方面着手。

先来说说C语言。

1、入门后多看代码

在有一定基础以后一定要多看别人的代码。注意代码中的算法和数据结构。毕竟学C之后的关口就是算法和数据结构。提到数据结构,指针是其中重要的一环,绝大多数的数据结构是建立在指针之上的,如链表、队列、树、图等等,所以只有学好指针才能真正学好C。别的方面也要关注一下,诸如变量的命名、库函数的用法等等。有些库函数是经常用到的。对于这些函数的用法就要牢牢记住。

2、要自己动手

编程序是个实干的活,光说不练不行。刚开始学的时候可以多练习书上的习题。对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象。自己动手的过程中要不断纠正自己不好的编程习惯和认识错误。有一定的基础以后可以尝试编一点小游戏,照着编作为练习。基础很扎实的时候,可以编一些关于数据结构方面的东西。之后.....学汇编、硬件知识。

3、选择一个好的编译器

GCC或者VS都是一个好的选择

4、关于养成良好的编程习惯

(1) 在比较复杂的代码后面要有注释。如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误。除非你一直编东西给自己看。能在代码里说明白的就一定要在代码里体现。比如变量名、函数名,在命名的时候尽量说明是干什么用的。

(2)注意语句的嵌套不能过长,一般来说,一段代码里Tab要少于8个。简单说就是语句最多8个嵌套。对于新手来说,这个标准还要下降。有一个好习惯是,把主函数尽量写简短。经常看到别人的代码是主函数只有几行,几个函数调用,而定义全在主函数外部。这样一是减少了主函数内部的嵌套,二是比较精简,容易读懂。

(3)注意语句的选择。并不是分支语句就用if循环就用while、for。在适当的情况下switch和do while语句也是要用的。在某些时候,switch语句比if语句更加精练明了,而do while比while少一个循环。

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?

  • 第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
  • 第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
  • 第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,很多考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。

系统学习编程的方式。首先你要了解什么语言能做什么,学来干嘛,然后学相对应的知识,而不是盲目的去学习。

C语言很多人都是刚刚接触 完全都不知道这是什么,那么就要先装个编译器,IED,或者gcc等都可以,只要能用。

C语言知识流程:

学数据类型,-进制转换-运算符-循环语句-开关分支语句-函数-数组-字符串-指针-结构体-内存管理-文件操作-函数指针-指针函数-多维数组-高级指针-结构图嵌套-高级内存管理-链表-排序算法-二树叉-APi函数-linux命令-linuxAPi函数-shell脚本-socket通信-等。

初学者看得会有点乱,到了学API函数 的时候也就是开发项目的时候了,但是有一点注意,因为部分知识没法在书上表达出来,所以目前书上知识是不完善的。

一门语言开发出项目来才算是真正的开始,也就是说,你开发出来项目,才有可能去接触工作,C语言的工作岗位相对来说是比较少的。

再来说说C++:

C++ 知识很多,主要部分就是框架,QT,MFC这两种框架目前用的是比较多的,也有人会直接学C++,但是学起来会比直接学C还难,而学过C在学C++是容易很多,主要学的就是框架方面的知识了,C语言的知识和C++的差不多,区别不大,所以学C++的时候主要学的就是框架了。

C++知识流程:

编译环境配置-名字空间-函数重载-哑元函数-内联函数-引用-类型转换-面向对象-类的使用-构造函数-析构函数-拷贝构造-拷贝赋值-this指针-常对象-常函数-动态内存分配-静态成员-运算符重载-继承-多重继承-函数重写-多态-虚函数-抽类象-虚析构-动态绑定-文件i/o-异常处理-标准异常-泛型编程-十大容器-算法-迭代器-QT编程-QT三维图形-API函数编程-MFC框架编程。

C语言是面向过程的,而C++是面向对象的。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

上面知识学完就该到项目开发,只有开发出项目,你才能去工作,开发软件等。

以上就是一个学习的流程,从零基础有顺序的学习,才能走得快一点,而不是盲目。

到此这篇关于零基础学习C/C++需要注意的地方的文章就介绍到这了,更多相关零基础学习C/C++内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 学习 C++能带给我们什么

    C++准确说是一门中级语言,介于汇编和高级语言之间吧,要求程序员了解计算机的内部数据存储.个人认为,作为学生还是花功夫学C++,因为<设计模式><数据结构>这些课程基本上还是C++应付的比较好(我的切身体会),学习 C++,认真阅读c++ primer,而后配合 The ADAPTIVE Communication Environment (ACE)了解设计模式, 再看看<深入浅出STL>,就会发现其他语言都一样,不变的是思想本身. 在以下领域,C++有着根本性的优势:

  • C++ Coroutine简单学习教程

    在C++里,一个函数如果其函数体实现中包含co_await.co_yield.co_return中任何一个关键字,那么这个函数就是一个coroutine.其中: co_await:挂起当前的coroutine co_return:从当前coroutine返回一个结果 co_yield:返回一个结果并且挂起当前的coroutine 一个coroutine要能被编译期识别并通过编译,在某些情况下要自己去特化coroutine_traits.下面就一个简单的coroutine来说一说C++编译器是如何

  • 简明的C++函数指针学习教程

    定义 每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针. 语法 数据类型 (*指针变量名)(参数表): int (*myFunc)(double b, int c); 说明 函数指针的定义形式中的数据类型是指函数的返回值的类型. 区分下面两个语句: int (*p)(int a, int b);//p是一个指向函数的指针变量,所指函数的返回值类型为整型 int *p(int a, int b);//p是函数名,此函数的返回值类型为整型指针 指向函数的指针变量不

  • C++构造函数深度学习

    本文针对C++构造函数进行深度探究,供大家参考,具体内容如下 1.引子:  以下代码中的输出语句输出0吗,为什么? struct Test { int _a; Test(int a) : _a(a) {} Test() { Test(0); } }; Test obj; cout << obj._a << endl; 输出为:-858993460 2.剖析 上面代码的输出为一个垃圾值,也就是说obj调用构造函数并没有对成员进行初始化工作,虽然默认无参构造Test()内部调用了Tes

  • 学习C++编程的必备软件

    1. 前言 这一课我们来做一些 C++ 开发前的准备工作. 2. 编程的必要工具 依你看,对编程来说,什么软件是必要的呢? 如果你认真学了上一课,那你至少可以说出一种吧. 对了,就是编译器.这个重要的程序可以把你的源代码(用高级语言如 C 语言写的指令)转换成电脑可以理解的二进制码(只包含 0 和 1 的,类似 01100110001111011101010... ). 上一课我们也提了一下,每种高级语言都有对应的编译器(当然对于 Python 这样的解释性语言,就不需要编译了),光是 C++

  • 谈谈C++学习之Pair的使用方法

    一.Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化. pair<string, string> a("James", "Joy"); 也可以像上面一样在定义的时候直接对其初始化. 由于pair类型的使

  • vscode C++远程调试运行(学习C++用)

    目标: 连接远程主机 (ssh) 配置C++编译环境 (输出结果后删除二进制文件) 步骤: 安装Remote SSH,连接远程主机 Visual Studio 官方文档 https://code.visualstudio.com/docs/remote/ssh 图标 2. 配置C++编译运行环境 主要参考下面两篇文档 https://code.visualstudio.com/docs/cpp/config-wsl https://code.visualstudio.com/docs/edito

  • 零基础学习C/C++需要注意的地方

    谈及C/C++,功能强大.应用广泛,一旦掌握了后,若是再自学其他语言就显得轻而易举了.那为什么学C/C++的人少呢?很多人认为C/C++虽然博大精深,但也难学.其实就本人认为C/C++并非是"difficult(困难)"的,只要你能理清思路,掌握它的精髓,配合一套教材.那么学C/C++是一件非常容易且又其乐无穷的事.今天本人就与大家一起谈谈如何学习C/C++或者说学习C/C++应从哪几方面着手. 先来说说C语言. 1.入门后多看代码 在有一定基础以后一定要多看别人的代码.注意代码中的算

  • 零基础学习AJAX之AJAX框架

    上文(零基础学习AJAX之AJAX的简介和基础)对ajax异步请求服务器做了详细的介绍和基础应用,可以看出,ajax的一些过程是相对不变的.不必要每次发送请求都写一遍发送代码,一些ajax开发人员已经把他们的过程封装成ajax框架. 本节主要介绍ajaxLib和ajaxGold两款框架. 1.ajaxLib ajaxLib是一个非常小巧的ajax框架. 使用它首先将文件使用引入到页面中.改框架是一个直接获取XML的框架,调运函数如下: loadXMLDoc(url,callback,boolea

  • 零基础学习Python爬虫

    目录 爬虫 为什么我们要使用爬虫 爬虫准备工作 爬虫项目讲解 代码分析 1.爬取网页 2.逐一解析数据 3.保存数据 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做. 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中. 过去,我们通过书籍.报

  • 零基础学习iOS直播之播放

    对于直播来说,客户端主要做两件事情,推流和播放.今天先讲播放. 播放流程 拉流:服务器已有直播内容,从指定地址进行拉取的过程.其实就是向服务器请求数据. 解码:对视屏数据进行解压缩. 渲染:生成图片的过程.视屏其实就是一张张连续的图片进行切换,一张图片就是一帧.帧率顾名思义就是每秒显示的图片数,当帧率达到16时,人眼就会认为是流畅的.是不是很神奇. 这里的每个步骤能弄明白都可以成为人才了,如果还能解决其中的不足,那你就是尖端人才了.弄懂这些需要耗费大量的时间,还好有ijkplayer视屏直播框架

  • 零基础学习iOS直播之采集

    直播的采集由采集的设备(摄像头.话筒)不同分为视频采集和音频采集,本篇文章会分别介绍. 1.采集步骤 创建捕捉会话(AVCaptureSession),iOS调用相机和话筒之前都需要创建捕捉对话,把输入输出设备添加进对话中. 往会话中添加视频输入对象(AVCaptureDeviceInput). 往会话中添加音频输入对象(AVCaptureDeviceInput). 往会话中添加视频输出对象(AVCaptureVideoDataOutput). 往会话中添加音频输出对象(AVCaptureAud

  • Bootstrap零基础学习第一课之模板

    最近需要做一个简单的Web页面.  考虑到前端经验不足,为了快速产出,同时项目只是一个工具,对项目没有什么要求,所以我选择了Bootstrap这个框架作为Web框架.  写从零开始学Bootstrap的初衷:  看了半天的Bootstrap的文档,包括官方的(http://v3.bootcss.com/getting-started/)和非官方的(http://www.runoob.com/bootstrap/bootstrap-tutorial.html),以及他人写的简单入门博客(http:

  • 零基础学习AJAX之制作自动校验的表单

    传统网页在注册时检测用户名是否被占用,传统的校验显然缓慢笨拙. 当ajax出现后,这种体验有了很大的改观,因为在用户填写表单时,签名的表单项已经发送给了服务器,然后根据用户填写好的内容进行数据查询.在查询号无需页面刷新就自动给了提示.类似这样的应用大大的提高了用户的体验,本节简单介绍自动校验表单制作方法.从原理上分析ajax的作用. 1.搭建框架 首先为html框架 复制代码 代码如下: <form name="register">             <p>

  • 零基础学习教程之Linux下搭建android开发环境

    不得已重新配置,这里记下详细步骤,分享给大家. 一.安装jdk,具体步骤如下: 1.将jdk-7u4-linux-i586.tar拷贝到linux下得/home/yan/download目录,新建一个目录/home/yan/android.所以和android相关的都安装到/home/yan/android这个目录,所有的源安装文件都放到download下.切换到root,在download目录下输入命令:tar -zxvf  jdk-7u4-linux-i586.tar -C ../andro

  • 零基础学习AJAX之AJAX的简介和基础

    本节简介(异步链接服务器对象)XMLHTTPRequest以及AJAX的简介. AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML). AJAX有四个方面的好处:1.即减轻了服务器的负担.2带来了更好的用户体验.3.基于标准被广泛的支持.4.拥有更好的页面呈现和数据分离. 技术名称 技术说明 javascript javascript是通用的脚本语言,AJAX是用javascript编写的 css 用户界面的样式通过css来修

  • C#零基础学习理解委托

    说来惭愧,在大学的课程中,竟然没有听说过委托这个名称.那么今天我就带着大家一起探讨下委托和事件. 咱们先来看下委托 我主要从以下几个方面讲解 1,  为什么使用委托  2.什么是委托  3.委托如何使用 为什么使用委托? 委托是c#中非常重要的一个概念,使用委托使程序员可以将方法引用封装在委托对象内.然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法.与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的. 什么是委托? 委托是一种引用方法的类型,一旦为委

随机推荐