迷茫不知所措,求方向指引!

我和我的代码互怼 2014-02-03 02:32:45
很早以前听大侠说C很难,于是在心中暗暗觉得会C的就一定是大神级别的人物,像我这种只能对其膜拜。于是自学VB,成就了一点,又自学了C#,于是又成就了一点点,接着C#用了几年,写写外挂找点电话费。一个机会了解了C的神奇,又一个偶遇看了一个很出色的C视频教程,第一节就明白了C的功能并了解C其实并不难学。要是以后就只是开发桌面软件,倒也不用特地学习C,用C#就能很好的去实现,但我想试试玩些底层的东西,做些具体的东西玩玩,比如单片机上的嵌入式开发。
C我看了半个月,基本语法也就那样,会一门语言就能很好的学习另一门语言,C还是比较好接受的。但又明显感觉到自己的一些基础不足,我特地留了堆栈和指针没去更深的看,因为我不知道看他们是不是要先去看看汇编或者计算机原理方面的东西?
为此,我特地先找了计算机组成原理的PDF看了大概,发现内容不是对我要理解的东西有针对性,于是又去找了汇编的PDF,没认真去看,大概也就翻翻,发现好像还是必须先看计算机原理,于是又找了一些计算机的原理,看了看还是觉得不对,迷茫,不知道现在应该怎么去学习,为以后做嵌入式软件开发做基础,求指教~
...全文
292 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 ALNG 的回复:
学指针结合链表,二叉树等来学习。堆栈的话,好像没多少可说的,作为一种抽象数据结构,就是后进先出。这个特性特别适合函数调用的关系,后调用的函数先返回。一般性地了解C函数调用的参数和函数地址压栈的顺序,了解局部变量(多数)是在堆栈上分配空间,并随着调用函数退出而不再有效(有助于理解局部变量的生存期)。然后学习树的时候有n多递归,这个也有助于以及有求于你对堆栈工作机制的了解。都是很简单的东西,去做,就会点滴理解以致融汇贯通。没有什么大虾能几句话放进你的脑袋里面吧? 子曰,学而不思则罔,思而不学则殆。你是未学先思,殆矣乎,殆矣乎!
谢谢指导,我会注意你说的哪些问题的,谢谢
ebaker1024 2014-02-11
  • 打赏
  • 举报
回复
指针是C语言的精华,也是C语言学习的难点。 不会用指针,意味着你还没有掌握C语言。 我的经验,花点时间学一下汇编语言,再来学指针就很轻松了。不需要把汇编学得很深入,重点是了解CPU的工作原理。 另外,学语言的目的不是做习题或考试,而是要应用,提高应用水平的方法,就是阅读一些典范的源代码,然后自己动手模仿、练习。例如: A)UNIX/LINUX 环境中的命令和实用程序。如:date, bc, wc, common, bash, grep, awk ... B) LINUX 内核源代码。这个比较庞大。但如果你准备从事嵌入式系统开发,这是必要的功课。 C)还有一些优秀的开源软件也是用C开发的。如:Nginx。如果把这个东东搞清楚,你在就业市场上就很有竞争力。 建议从A入手。首先加强两方面的技能:一是对复杂的任务进行分析,分解成若干个简单的子任务;二是如何利用现成的模块构造功能较为复杂的大模块。 这两方面的能力是程序员的基本功,不管你从事那个领域的开发都能用上。 推荐你看一本书:《深入理解计算机系​统》。
  • 打赏
  • 举报
回复
引用 6 楼 KenZhang1031 的回复:
C是工具,学C是了解不了系统底层的东西的。不知道你要学习底层的什么? 看你举了单片机的例子,如果想要学单片机,就直接看单片机的书,从单片机的芯片架构、汇编指令,c编程顺序学就可以了,单片机方面书籍有很多,入门可以看北航的书籍和单片机的datasheet,其中intel的51系列的手册比较完整;如果对ARM感兴趣,就看ARM的官方资料。 如果是要了解计算机系统,那么就学计算机系统的原理(比如深入理解计算机系统这样的书),要了解计算机系统,操作系统原理也是必须要理解的,可以学习linux内核,因为开源,结合内核源码,可以知道计算机是怎么管理整个系统的,包括怎么驱动底层的硬件的。 如果是要理解一门语言是怎么工作的,比如C语言,那要学编译原理。 如果只是想深入学习C语言,那就好好的学C语言,不过光学C是深入理解不了底层的东西的。
很全面的分析,谢谢,我知道怎么做了
  • 打赏
  • 举报
回复
引用 5 楼 u013584315 的回复:
C语言的精华是指针。好好学,我只能这么说
嗯,为了更加深刻的学习C,我现在在看汇编,了解以后再学习指针我觉得会比较好理解内存
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
C神奇在哪里?你应该明白,任何通用编程语言都是图灵等价的,即不存在一种语言可以解决,但是另一种语言无法解决的问题。
我说的神奇是因为C能直接操作机器,很早以前以为能控制机器就是牛B的东西,所以在小时候几年级的时候就印象到心里了
derekrose 2014-02-11
  • 打赏
  • 举报
回复
赵老师上!!
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
如果只是堆栈和指针,倒不用特别深入到非常底层,因为它们已经是在某一抽象层次之上了; 学会用debugger,然后看看基本理论,够用。
嗯,我现在找到重点了,去汇编了
iamkconghua 2014-02-06
  • 打赏
  • 举报
回复
C语言视频教程: http://www.tudou.com/plcover/z5u9lwXuPKU/ 按顺序看。
Mr. Code 2014-02-05
  • 打赏
  • 举报
回复
C是工具,学C是了解不了系统底层的东西的。不知道你要学习底层的什么? 看你举了单片机的例子,如果想要学单片机,就直接看单片机的书,从单片机的芯片架构、汇编指令,c编程顺序学就可以了,单片机方面书籍有很多,入门可以看北航的书籍和单片机的datasheet,其中intel的51系列的手册比较完整;如果对ARM感兴趣,就看ARM的官方资料。 如果是要了解计算机系统,那么就学计算机系统的原理(比如深入理解计算机系统这样的书),要了解计算机系统,操作系统原理也是必须要理解的,可以学习linux内核,因为开源,结合内核源码,可以知道计算机是怎么管理整个系统的,包括怎么驱动底层的硬件的。 如果是要理解一门语言是怎么工作的,比如C语言,那要学编译原理。 如果只是想深入学习C语言,那就好好的学C语言,不过光学C是深入理解不了底层的东西的。
若云流风 2014-02-04
  • 打赏
  • 举报
回复
C语言的精华是指针。好好学,我只能这么说
threenewbee 2014-02-04
  • 打赏
  • 举报
回复
C神奇在哪里?你应该明白,任何通用编程语言都是图灵等价的,即不存在一种语言可以解决,但是另一种语言无法解决的问题。
ForestDB 2014-02-04
  • 打赏
  • 举报
回复
如果只是堆栈和指针,倒不用特别深入到非常底层,因为它们已经是在某一抽象层次之上了; 学会用debugger,然后看看基本理论,够用。
孩皮妞野 2014-02-03
  • 打赏
  • 举报
回复
学指针结合链表,二叉树等来学习。堆栈的话,好像没多少可说的,作为一种抽象数据结构,就是后进先出。这个特性特别适合函数调用的关系,后调用的函数先返回。一般性地了解C函数调用的参数和函数地址压栈的顺序,了解局部变量(多数)是在堆栈上分配空间,并随着调用函数退出而不再有效(有助于理解局部变量的生存期)。然后学习树的时候有n多递归,这个也有助于以及有求于你对堆栈工作机制的了解。都是很简单的东西,去做,就会点滴理解以致融汇贯通。没有什么大虾能几句话放进你的脑袋里面吧? 子曰,学而不思则罔,思而不学则殆。你是未学先思,殆矣乎,殆矣乎!
  • 打赏
  • 举报
回复
这里补充一下,我是希望第一步先把C学会,为了更好的了解堆栈和指针,我应该怎么学习?

69,373

社区成员

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

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