散分+快来报名“C语言指针与汇编内存地址”公开课

赵4老师 2016-05-03 10:42:38
加精
欢迎初步了解C语言指针和X86汇编语言的新人们来捧个人场啊!

“C语言指针与汇编内存地址”公开课
http://edu.csdn.net/huiyiCourse/detail/111

理解讨论之前请先学会如何观察

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

对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。

想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
但我又不得不承认:
有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物;
而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。
而我本人属前者。

不要企图依赖输出指针相关表达式...的值【比如printf("%p\n",...);或者cout<<...】来理解指针的本质,
而要依赖调试时的反汇编窗口中的C/C++代码【比如void *p=(void *)(...);】及其对应汇编指令以及内存窗口中的内存地址和内存值来理解指针的本质。


这辈子不看内存地址和内存值;只画链表、指针示意图,画堆栈示意图,画各种示意图,甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗?本人深表怀疑!
这辈子不种麦不收麦不将麦粒拿去磨面;只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头,压面条,烤面包,……能从本质上理解面粉、理解面食吗?本人深表怀疑!!

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!
...全文
5825 135 打赏 收藏 转发到动态 举报
写回复
用AI写文章
135 条回复
切换为时间正序
请发表友善的回复…
发表回复
HomerRo 2017-10-06
  • 打赏
  • 举报
回复
抱歉,抱歉 其实VS2015,对C99的支持几乎是完备的,对C++11/14/17也是支持,只不过支持C17的部分内容。 至于C语言的版本演进是:1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准组织ISO(International Organization for Standardization)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。[2] 在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。 C88是什么东东,也许是C语言的1.0版本吧,不知,请高人指点 这样说来,基于DOS操作系统16位的windows 1.0~3.0版的漏洞一定也不少O(∩_∩)O
HomerRo 2017-10-06
  • 打赏
  • 举报
回复
关于c88-c89的就让他过去吧,目前C标准是C12&C14正在使用,最新试用版是C17了,在VS2017中用到部分C17内容O(∩_∩)O。
fKlose 2016-10-03
  • 打赏
  • 举报
回复
到底先有的蛋呢还是先有的机
lucky_草木皆兵 2016-09-28
  • 打赏
  • 举报
回复
把所有的回复都看完了 还是没有看到那个小程序关于c88-c89的解说
tthawk 2016-06-02
  • 打赏
  • 举报
回复
各位大神,能不能看看这个问题。 http://bbs.csdn.net/topics/391950873
赵4老师 2016-05-27
  • 打赏
  • 举报
回复
赵4老师 2016-05-22
  • 打赏
  • 举报
回复
引用 132 楼 zhao4zhong1 的回复:
听说本ID的公开课的回放视频迟迟不上线的原因是 CSDN课程的视频编辑被 将本ID的猥琐大叔形象PS成呆萌萝莉形象 的需求绞尽脑汁了。
刚看了一遍录像。 里面既没萝莉,也没大叔!
fxfxfxfxw 2016-05-18
  • 打赏
  • 举报
回复
老师,特地来接分了
赵4老师 2016-05-16
  • 打赏
  • 举报
回复
听说本ID的公开课的回放视频迟迟不上线的原因是 CSDN课程的视频编辑被 将本ID的猥琐大叔形象PS成呆萌萝莉形象 的需求绞尽脑汁了。
赵4老师 2016-05-16
  • 打赏
  • 举报
回复
line_us 2016-05-15
  • 打赏
  • 举报
回复
我就是来听课的。
赵4老师 2016-05-14
  • 打赏
  • 举报
回复
引用 124 楼 CCDDzclxy 的回复:
[quote=引用 50 楼 zhao4zhong1 的回复:] [quote=引用 46 楼 CCDDzclxy 的回复:] 赵4老师 这个直播结束后,会有录像放出来吗?
应该会有。但不排除: 技术故障导致录像失败 无证程序员导致录像丢失 猥琐赵4老师导致录像很难看 内容太敏感导致全球黑客联盟黑掉 含违规内容导致广电总局封杀 …… [/quote] 错过直播了... 赵4老师 该放录像了啊,等着呢~~~[/quote] 我也等着呢……
sinat_34973038 2016-05-12
  • 打赏
  • 举报
回复
犀利,太让人不懂.
Kingofcode 2016-05-11
  • 打赏
  • 举报
回复
完整看完,觉得【均陵鼠侠 】有点需要人关心。。。。。。。
zhangsheng_1992 2016-05-11
  • 打赏
  • 举报
回复
前排强势围观
用户 昵称 2016-05-11
  • 打赏
  • 举报
回复
引用 125 楼 zhao4zhong1 的回复:
讲课比想象的累啊!
你双手的老茧不是这样出来的吗?
赵4老师 2016-05-11
  • 打赏
  • 举报
回复
讲课比想象的累啊!
CCDDzclxy 2016-05-11
  • 打赏
  • 举报
回复
引用 50 楼 zhao4zhong1 的回复:
[quote=引用 46 楼 CCDDzclxy 的回复:] 赵4老师 这个直播结束后,会有录像放出来吗?
应该会有。但不排除: 技术故障导致录像失败 无证程序员导致录像丢失 猥琐赵4老师导致录像很难看 内容太敏感导致全球黑客联盟黑掉 含违规内容导致广电总局封杀 …… [/quote] 错过直播了... 赵4老师 该放录像了啊,等着呢~~~
qq_34944800 2016-05-10
  • 打赏
  • 举报
回复
支持楼主,干的漂亮!!
RENHQ 2016-05-10
  • 打赏
  • 举报
回复
直播课有录像吗,错过了,真想看看
加载更多回复(115)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧