C语言Ou,如何学好C语言 - lazyou的个人页面 - OSCHINA - 中文开源技术交流社区

今天在论坛上看到这个话题,剪了一些我认为比较好的回答,大家也看看,希望也能够从中受益吧!

有挺多回答提到LINUX,顺便问问各位,为什么学好C要在LINUX平台下比较好呢?

1.         去看C89,C99

2.         很多开源的知名项目都是C写的呀。可以看看人家的代码。可以按兴趣爱好找相关开源项目。

3.         看国外的书,英文版的the c program language

4.         个人理解,深入学习C语言其实不是学C了,而是学习计算机,因为就C和系统最接近。

首先,你得选择一个平台,Windows,Linux皆可,个人推荐Linux,不解释。

其次,C的基本语法你得弄熟了,再就是指针,否则免谈。

接下来几个方向,其实是深入C最后都会去涉及的:

1、汇编,C代码映射到汇编代码是怎样的?

2、某一平台的API,这实际上是系统编程,包括进程,内存管理,线程,同步和通信,等等

5.         如果是上层应用程序的话,个人觉得别考虑C语言;

底层的话,C语言就跑不掉了,单片机、驱动等,现在楼主可以看看《实战linux编程精髓》,可以学到很多东西,然后慢慢地向驱动发展嘛。什么linux下的网络编程,web编程,多线程编程等,要学习的东西多的很哦

6.         建议楼主学习下linux,通过linux来学习c和C++,很多C语言的好书都是通过linux的Gcc来讲解的,C语言有很多好书,比如C和指针,C语言深度解剖,还有专家编程等等。

如果基础好的话可以看深入理解计算机系统。

7.         计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

8.         1.C语言的常用语法还是比较简单的,找本教材系统看下,其基本语法应该没有什么太大问题。C语言本身的精髓就是指针,理解好指针式学好C的一个坎儿;

2.从目前来看,用C语言实现一些应用程序,可能性不大,因为代码量太大了,在这方面面向过程的C远没有面向对象的其他高级语言优势大。所以C语言在嵌入式,操作系统方面应用的比较广泛;

3.C语言之所以难学是因为,C程序员必须对一些原理性的知识有所了解,背景知识要求的特别多,比如说操作系统方面的,数据结构,编译原理,汇编等等...

故:学好C不是一蹴而就的事情,需要一点一点的积累~

建议学习下linux,好处也不多说,呵呵,祝你好运~

9.         就我个人使用感想,相对于简单直白的C来说, C++功能异常强大, 但那是以代码的可读性和复杂的实现机制为代价的, 有时候你会碰到一些莫名其妙的问题, 大部分是C++内置设施的问题, 就比如我自从在string上吃了点苦头之后, 还是继续用回了char *,  学习成本也是一个问题, 合格的C程序员能裸眼"反汇编"C语言代码并对底层实现了若指掌, 而由于复杂的机制C++程序员要做到这一点则是要会费相当大的精气神,C++程序员的成长周期相对于C程序员过于漫长, 在这个难学易用的过程中会过的比较痛苦.不过当你成为一名合格的C++程序员时, 你会发现以前总会划伤你的手的匕首已经锤炼成了一把利剑,  亦知磨一剑,不独定诸蛮!

10.       不要单纯地把语言当语言学,要结合具体应用选择一个平台Windows 或者 Linux,会决定你的方向 !

个人推荐Linux , Windows 下基本见不到真正C语言的应用 (别提VC,那是C++)所以, Linux C

11.       要深入,打基础是必须的。但是学习过程可以不必从组成原理、操作系统、编译原理、离散数学这些基础的东西开始。

建议的学习过程如下,按照编号排序

1、C语言。

这个阶段就是熟悉语法,熟悉常用的库,写一些简单的小程序,这个时候就要开始培养好的编码习惯,像命名方式、注释方式之类的,不要太纠结于一些技巧,特别是:a=a+++a++这种。现在一般都在windows下学习,所以不要直接写窗口程序,从控制台程序开始练习。

2、数据结构。有了前一阶段的基础,然后就开始学习数据结构,用C语言实现实现几个典型的结构,链表、队列、栈、树,图就看情况了。这些结构都要用C语言实现一遍。

3、windows编程。

数据结构扎实之后,就可以学windows编程了。最开始就拖拖控件,倒腾倒腾界面,弄几个玩具后,有了一定的概念后,不要着急去学windows内核,网络编程之类的东西。这时候,做一个项目,用纯api去写一个记事本,主界面不要使用控件,自己去处理消息、文字显示、光标之类的东西,就这个项目够你做3、4个月的。等弄出记事本以后,相信这个时候的代码是非常凌乱的。然后进入下一步。

4、C++和设计模式。

根据设计模式和C++,重写记事本,然后用C语言,在重写一遍。这期间,很自然就可以认识到代码的复用、重构、升级,而且同一个程序写了三遍,熟能生巧,结构设计、模块划分等等也有了初步的认识。而且这都是通过实践获得的认知,比从书上看来的真切、深刻,全部都会可入脑子里,这时候再看看相关的书,理解的程度要深的多。自学要弄到这一步,抓紧一点,一年应该差不多了,放松点1年半,在松点2、3年吧,够你本科几年耗的了。如果有人带,能全天学,半年就差不多可以了。能完成这些内容,基础已经非常雄厚,可以进行下一步。

5、过了以上的步骤,可以去学其他内容了。像各种库,DX、MFC、STL等等。或者其他语言,C#、java。

其实,很多人都是在过了第1步以后,就直接跳到这一步,所以会感觉非常艰难。其实这也很正常,没人带的情况下,这一步最能让人看到成果,这更是微软希望看到的。但是这也导致了很多人没有了深入的基础,或许也就这么一直浮于表面。结果很简单了,直接沦为码农。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的有限差分法实验报告用MATLAB中的有限差分法计算槽内电位;对比解析法和数值法的异同点;选取一点,绘制收敛曲线;总的三维电位图+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值