pdf

C语言深度解剖

  • 1星
  • 日期: 2021-04-30
  • 大小: 1.71MB
  • 所需积分:1分
  • 下载次数:6
  • favicon收藏
  • rep举报
  • free评论
标签: C语言

C语言

我遇到过很多程序员和计算机系毕业的学生,也给很多程序员和计算机系毕业的学生讲解过《高级C语言程序设计》。每期班开课前,我总会问学生:你感觉C语言学得怎么样?难吗?指针明白吗?数组呢?内存管理呢?往往学生回答说:感觉还可以,C语言不难,指针很明白,数组很简单,内存管理也不难。一般我会再问一个问题:通过这个班的学习,你想达到什么程度?很多学生回答:精通C语言。我告诉他们:我很无奈,也很无语。因为我完全在和一群业余者或者是C语言爱好者在对话。你们大学的计算机教育根本就是在浪费你们的时间,念了几年大学,连C语言的门都没摸着。现在大多数学校计算机系都开了C、C++、Java、C#等等语言,好像什么都学了,但是什么都不会,更可悲的是有些大学居然取消了C语言课程,认为其过时了。我个人的观点是“十鸟在林,不如一鸟在手”,真正把C语言整明白了再学别的语言也很简单,如果C语言都没整明白,别的语言学得再好也是花架子,因为你并不了解底层是怎么回事。当然我也从来不认为一个没学过汇编的人能真正掌握C语言的真谛。我个人一直认为,普通人用C语言在3年之下,一般来说,还没掌握C语言;5年之下,一般来说还没熟悉C语言;10年之下,谈不上精通。所以,我告诉我的学生:听完我的课,远达不到精通的目标,熟悉也达不到,掌握也达不到。那能达到什么目标?-----领你们进入C语言的大门。入门之后的造化如何在于你们自己。不过我可以告诉你们一条不是捷径的捷径:把一个键盘的F10或F11按坏,当然不能是垃圾键盘。

往往讲到这里,学生眼里总是透露着疑虑。C语言有这么难吗?我的回答是:不难。但你就是用不明白。学生说:以前大学老师讲C语言,我学得很好。老师讲的都能听懂,考试也很好。平时练习感觉自己还不错,工作也很轻松找到了。我告诉学生:听明白,看明白不代表你懂了,你懂了不代表你会用了,你会用了不代表你能用明白,你能用明白不代表你真正懂了!什么时候表明你真正懂了呢?你站在我这来,把问题给下面的同学讲明白,学生都听明白了,说明你真正懂了。否则,你就没真正懂,这是检验懂没懂的唯一标准。

冰山大家都没见过,但总听过或是电影里看过吧?如果你连《泰坦尼克》都没看过,那你也算个人物(开个玩笑)。《泰坦尼克》里的冰山给泰坦尼克造成了巨大的损失。你们都是理工科的,应该明白冰山在水面上的部分只是总个冰山的1/8。我现在就告诉你们,C语言就是这座冰山。你们现在仅仅是摸到了水面上的部分,甚至根本不知道水面下的部分。我希望通过我的讲解,让你们摸到水面下的部分,让你们知道C语言到底是什么样子。

从现在开始,除非在特殊情况下,不允许用printf这个函数。为什么呢?很多学生写完代码,直接用printf打印出来,发现结果不对。然后就举手问我:老师,我的结果为什么不对啊?连调试的意识都没有!大多数学生根本就不会调试,不会看变量的值,内存的值。

只知道printf出来结果不对,却不知道为什么不对,怎么解决。这种情况还算好的。往往很多时候printf出来的结果是对的,然后呢,学生也理所当然的认为程序没有问题。是这样吗?往往不是,往后看,你能看到例子的。永远给我记住一点:结果对,并不代表程序真正没有问题。所以,以后尽量不要用printf函数,要去看变量的值,内存的值。当然,在我们目前的编译器里,变量的值,内存的值对了就代表你程序没问题吗?也不是,往后,你也会看到例子的。

推荐帖子 最新更新时间:2021-07-31 11:54

micropython延时定时 - sleep教程pyboard教程
import time                                     #引入 time 类 time.sleep(1)                                   # 延时 1s time.sleep_ms(500)                              # 延时 500ms time.sleep_us(10)      
陈韶华 MicroPython开源版块
请懂PIC的朋友帮我解答
附件中是完整的项目包,MPLAB IDE的和MPLAB X IDE的都有,MPLAB X用的是XC8 FREE版的,还有PROTEUS的仿真图纸用的是PROTERS 8,不信的自己编译运行看看就知道,我是没办法理解。 void main() {    InitSystem();             while(1)                     {      CLRW
zjxf95 Microchip MCU
msp430 br指令使用
asm("br #0x8066");               是指跳转到0x8066的地址去执行 asm("br &0x8066");等同于 m("br 0x8066");              是指跳转到以0x8066存储空间中的数据为地址去执行 在内存中(RAM)想保存运行指令就要给其赋相应的指令值,如果一个地址一个地址的赋值会使命令不正确,其实是内存不边续的问题,要想让空间边续,
Jacktang 微控制器 MCU
用小型充电电池为物联网(IoT)设备供电
互联网连接设备的数量高达全球人口的四倍,且设备数量还在快速增加。物联网(IoT)可使企业、团体和个人通过连接的设备收集数据。活动监视器和智能手表等可穿戴设备是当今最常见的物联网设备。可穿戴设备能通过测量活动水平并帮您调整行为来提高健康水平,从而监测您的活动和健康状况。其它物联网设备以相似的原理收集车辆、家庭、企业和其它资产的数据,从而提高其利用度。连接物联网的恒温器可以提高加热和冷却的效率。连接物
maylove RF/无线
薄型材料能为毫米波技术带来什么?
     对移动设备来说,薄的PCB材料的机械特性在保持小型化和轻量化设计方面拥有明显的优势,但介质材料的厚度会影响高频应用中的阻抗控制。薄的PCB层压板还有一个优点是可以支持30GHz以及更高的毫米波频率,可以防止毫米波频率上常见的多余信号传播模式。      随着频率不断提高,波长越来越短,电路特性也更加精细。通常会要求采用较低介电常数的PCB层压材料,因为在特定频率下的特征阻抗导线
Aguilera RF/无线
海思hi3531接摄像头做ipc会不会比hi3516好?
hi3531既可以编码也可以解码,而hi3516只能编码,编码的参数一样的;但是hi3531能同时支持4路1080p 30fps的h.264编码, 理论上可以一个soc接4个1080p的高清摄像头监控四个方位,而hi3516只能支持一路1080p 。 hi3531既能做ipc又能做ndr。hi3516只能做ipc 。 那为什么市场上为什么很少看到hi3531做ipc的清一色hi3516.
oyhprince ARM技术

评论

登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })
×