C语言入门调试与思维
C语言入门调试与思维
刚开始我作为一个C语言编译小白,对程序的书写和运行难以上手,初始阶段期间看了很多程序员路上的感想,也对程序这个行业有大致的了解,感到很新颖,很适合我的一个基础语言系,我用一学期来磨合我的C语言程序的学习与编写,一路踩了很多的坑,又在专业老师带领下算是入了门!
学到现在,我有一些对程序小白或者遇到一些小项目难以入手的C语言小伙伴分享一下我段路上的感悟。
首先是基础,要慢中有进:
作为一个小白,在入门时,不要想太多的为什么,先学是什么,多多练习。慢慢的将课本的基础语言架构背会,C语言是很有基础性的感觉是学其他语言的特长是在它的延伸,如果想学好这门语言必须要学会上网查询,这里的查,不是漫无目的去找相关代码,而是带着问题,具体到查询如何解决这个项目的关键步骤,也要锻炼自己的思维,那么如何来将网络代码真正意义上变成自己的呢?
思考,思考了解它的实现过程。想要学好计算机语言,就要沉浸式的思考,融入过程确实有点难受,但是破解它的代码思维或者在网上找到灵感,又在你的手下生花,那么你获得那种成就感,爽快的是无语伦比的,当你把你的项目当做艺术品来雕琢,慢慢来完善,看着没报错的程序段,没有bug的项目,那种充实感与收获感是极高的,一个字,多想,先从实现项目目标开始,能实现目标后再从可读性,美观等方向将自己代码完善。如果思维无处下手,就做简易的思维导图,将一大问题分解成小问题,程序的书写本身就是模块化,功能化,而我推荐边做边想边做笔记,这也是我目前做c项目的风格,查询一般用CSDN,这款专为程序员而生的软件,里面各种程序语言界大佬随时碰撞着交流、思想的火花,在这里,你一般程序中的问题都可以在这里找到,说不定还能得到意外的收获!!!
当然,做笔记的软件有很多,总有适合自己的一款,有道云笔记,印象笔记,X-mind,MindMaster……,含泪推荐MindMaster,我导师给我推荐的,精美的菜单式页面,大方精致的浏览方式,多彩的笔记设计,是比较适合我们的,当然也可以手写,但我估计可能不大适合。所以学会做笔记也是程序员的一门功课!
如果自己脑海有大概思维,那其实你就没有必要画流程图,但你要做得很仔细。其实我个人觉得,我们做的C语言的程序就是把自己的想法表达出来,你在做的时候就把你的大脑想成计算机(其实都差不多),然后你把一个一个的步骤表达出来就好。主要就是你大脑里面先要有构思,我这个程序究竟应该怎么表达,先想大体的框架,然后我的每一个细节该用什么方式表达,具体要到每一个小的循环,还有就是当你一下方法熟悉以后就可以在思考的时候把这个东西直接想成已经构思好的(就好像你自己事先就编辑好的函数一样),现在就只有需要拿过来用,当你都能够看见一个题目,10秒钟想到大体思路,1分钟想到具体实现的办法,然后把这个你自己想的编译就没有逻辑错误,那你就比较好了。总之,上面最关键的就是:变成是把自己的思想(方法)用计算机语言表达出来。你只要把这个你自己的想法一步一步的按照电脑运行(意思是这个语言的语法)的方式把他输入电脑内,然后让计算机来帮忙你做这个本来你能够做的事情(但是很麻烦),你的程序就好了,虽然说你的程序不一定精巧,但是你能够实现你自己想的功能,你就成功了第一步。
其次,得学会调试,不仅仅是语法调试,还得会逻辑调试。一个比较复杂的c程序,不可能一下子编辑完美运行(除行业天才外),要想学得精专,知道自己语句的执行力,就得调试,一般是边写边调试。
在编写代码的过程中,相信大家肯定遇到过这样的情况:代码能够编译通过,没有语法错误,但是运行结果却不对,反复检查了很多遍,依然不知道哪里出了问题。这个时候,就需要调试程序了。
(版权声明:下文一段为CSDN博主「shuimanting520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shuimanting520/java/article/details/51360152)
所谓调试(Debug),就是让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据;也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码。
在调试的过程中,我们可以日志,监控程序的每一个细节,包括变量的值、函数的调用过程、内存中数据、线程的调度等,从而发现隐藏的错误或者低效的代码。
编译器可以发现程序的语法错误,调试可以发现程序的逻辑错误。所谓逻辑错误,是指代码思路或者设计上的缺陷。
对于初学者来说,学习调试也可以增加编程的功力,它能让我们更加了解自己自己的程序,比如变量是什么时候赋值的、内存是什么时候分配的,从而弥补学习的纰漏。调试需要借助专业的辅助软件——调试器(Debugger)。现在主流C/C++调试器有下面几种:
- Remote
Debugger
Remote Debugger 是 VC/VS 自带的调试器,与整个IDE无缝衔接,使用非常方便,初学者建议使用该调试器,本教程也以 VS2010 为例讲解调试技巧。
- WinDbg
大名鼎鼎的 Windows 下的调试器,它的功能甚至超越了 Remote Debugger,它还有一个命令行版本(cdb.exe),但是这个命令行版本的调试器指令比较复杂,不建议初学者使用。
- LLDB
XCode 自带的调试器,Mac OS X 下开发必备调试器。
- GDB
Linux 下使用最多的一款调试器,也有 Windows 的移植版,如果你不使用 VC/VS,GDB 将是一个不错的选择。
以上也就是我本人结合自己经验及个前辈的宝贵总结,梳理我对C语言的学习过程的浅识!(尊重原创,转载请附上原文出处链接及本声明。)
C语言入门调试与思维相关推荐
- C语言入门(21)——使用DBG对C语言进行调试
C语言入门(21)--使用DBG对C语言进行调试 程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪.到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码 ...
- vhdl语言入门_从当初汇编、C语言入手,到如今FPGA开发已然十年,总结出“三多”!...
从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢答器.密码锁等实验时那个兴奋劲.当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus ...
- C语言入门——初识C语言
C语言入门--初识C语言 一. C语言的起源 二. 选择C语言的原因 (一). 设计特性 (二). 高效性 (三). 可移植性 (四). 强大而灵活 (五). 面向程序员 (六). 缺点 三. C语言 ...
- python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析
本文主要向大家介绍了Python语言入门之内存管理方式和垃圾回收算法解析,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 ...
- 【C/C++语言入门篇】-- 文件操作
[C/C++语言入门篇]-- 文件操作 收藏 此文于2010-03-09被推荐到CSDN首页 如何被推荐? 最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起.之前本打算这个模块就结束了,文件操 ...
- 《Go语言圣经》学习笔记 第一章 Go语言入门
Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...
- 怎么理解python语言_Python语言入门1-理解Python语言
本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...
- python语言入门-python语言入门资料
PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成.PyQt5本身拥有超过620个类和6000函数及方法.在可以运行于多个平台.PyQt5拥有双重协议 ...
- C语言入门——C语言概述
C语言入门--C语言概述 一. 简单的C程序示例 二. 示例解释 (一). 第一遍:快速概要 (二). 第二遍:程序细节 1. #include 指令和头文件 2. main() 函数 3. 注释 4 ...
最新文章
- LeetCode简单题之机器人能否返回原点
- python下载大文件mp4_python合并大量ts文件成mp4格式(ps:上限是450,亲测)
- 发现了lucene一个bug
- android 系统的切图方式_UI设计切图规范
- 数据结构Java09【计算机中数据的存储原理、2-3树的插入原理、B树和B+树】
- when click one item in table Select at least one column to perform the search
- 【自定义控件】自定义属性
- 一个简单的规则引擎例子
- [蓝桥杯][2014年第五届真题]兰顿蚂蚁-模拟
- linux cpp标准库,标准库以及标准头文件
- 大数据处理需注意的问题
- X明X源面试题《三》
- 微信小程序开发之——模板
- 高中计算机教学设计案例分析,高一年级信息技术教学设计(案例)
- MySql 大数据查询优化方案和超大分页的处理方法
- 关于23届大数据岗实习总结
- Types of bussiness
- yxc_第一章 基础算法(三)_双指针算法位运算
- 防火墙架构及CC***
- 神经网络的激活函数总结