V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hx1997
V2EX  ›  C

学完 C 的语法之后应该如何提高?

  •  
  •   hx1997 · 2014-11-30 00:10:30 +08:00 · 2300 次点击
    这是一个创建于 3639 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在能自己写一些小程序,但感觉提高不了。接下来应该怎么做?看些什么书还是?

    请在 C 语言范畴内回答,建议学 C++ 或者其他语言的就算了。

    谢谢!
    第 1 条附言  ·  2014-11-30 01:32:21 +08:00
    补充一下,学完语法是指入门、会写,不是语法方面我全了解的意思。比如你说指针我知道是什么,也知道怎么写出用指针的代码,但是使用指针过程中会不会写错就不一定了。

    之前没有说清楚,引起歧义,抱歉!(感觉会被喷
    24 条回复    2014-12-01 09:47:58 +08:00
    BGLL
        1
    BGLL  
       2014-11-30 00:19:17 +08:00   ❤️ 1
    研究各种算法,无底洞,够你琢磨了
    sophymax
        2
    sophymax  
       2014-11-30 00:27:01 +08:00   ❤️ 2
    1 研究数据结构 , 不必理会书里面的写法 , 只需要知道结构自己用各种链表指针撸出来就行了 , 注意下内存的处理
    2 有精力的话翻下汇编 , 不一定学会 , 是让自己理解各种内存之间的关系 , 我开始那时候只会用汇编 ,写了一堆程序(读写软盘什么的) , 然后后来学C的时候指针几乎没费任何功夫 , 很快就是想怎么写就怎么写的程度
    durrrr
        3
    durrrr  
       2014-11-30 00:32:27 +08:00   ❤️ 1
    写个 web 服务器玩?好多东西都可以复习到
    phoneli
        4
    phoneli  
       2014-11-30 00:33:49 +08:00   ❤️ 1
    写点小程序,再学习啊c++,再写点小程序,再学习下unix,再玩下linux,再写下网络编程,再来这里提问。
    huxh10
        5
    huxh10  
       2014-11-30 00:37:07 +08:00   ❤️ 1
    一个方向是算法和数据结构,比如《算法导论》、《数据结构与算法分析:C语言描述》,刷一刷OJ或者*code;另一个方向是系统编程,《linux programming by example the fundamentals》;之前还听人说过,学C语言看kernel之类的。不过话说回来C的语法真的学完了么,《C专家编程》、《C和指针》、《C陷阱与缺陷》...
    mckelvin
        6
    mckelvin  
       2014-11-30 01:00:58 +08:00 via iPad   ❤️ 1
    找个感兴趣的实际需求,阅读现有实现(已有开源库)代码,尝试改动并优化它们。顺路推销一些工具:cmake, valgrind, callgrind, qcachegrind.
    bombless
        7
    bombless  
       2014-11-30 01:24:10 +08:00   ❤️ 1
    做编译器吧……
    简单一点的话就做点HTTP啥的,实现个FTP啊SMTP或者HTTP代理、SOCKS5代理啥的。
    hx1997
        8
    hx1997  
    OP
       2014-11-30 01:26:53 +08:00
    @huxh10 语法学完是说会写出相应的代码,但不保证了解其高级用法,也不保证不会犯错,尤其是指针这些,感觉这些需要在实际运用中积累。我本来想说已入门的,但是又怕入门的定义不清楚,所以说成了学完语法,没想到还是有歧义。真正学完(精通)也不是一时半会的事吧。

    谢谢建议。
    Cee
        9
    Cee  
       2014-11-30 01:27:46 +08:00   ❤️ 1
    我都不敢说我学完c的语法。。。
    hx1997
        10
    hx1997  
    OP
       2014-11-30 01:33:37 +08:00
    @Cee 加附言了,口出狂言说学完语法会被喷的吧。。。
    Cee
        11
    Cee  
       2014-11-30 01:36:45 +08:00   ❤️ 1
    @hx1997
    那就写点很简单的面向过程的程序(
    之后
    喜欢算法去研究算法
    看看基础的数据结构
    有余力看看汇编 和系统最基础的底层搭钩
    网络应该也可以030
    lincanbin
        12
    lincanbin  
       2014-11-30 03:05:23 +08:00   ❤️ 1
    不断地练习,你可以去一些产品经理/天使投资/众酬的社区,抄几个点子来实现一下试试。
    besto
        13
    besto  
       2014-11-30 03:45:14 +08:00   ❤️ 1
    @huxh10 这位说的比较实际,推荐的书都不错。
    不过我的建议是,如果你真的是想用C,用C吃饭,把TCPL上所有的题目都做了,都很简单,但是想做对没那么容易。
    pagict
        14
    pagict  
       2014-11-30 08:47:42 +08:00   ❤️ 1
    zhangdawei
        15
    zhangdawei  
       2014-11-30 09:46:04 +08:00   ❤️ 1
    找个公司写C
    freeze
        16
    freeze  
       2014-11-30 10:32:10 +08:00 via iPhone   ❤️ 1
    单片机
    xuwenmang
        17
    xuwenmang  
       2014-11-30 10:50:18 +08:00   ❤️ 1
    研究PHP核心,有个研究方向不错。。。
    402124773
        18
    402124773  
       2014-11-30 10:54:06 +08:00   ❤️ 1
    C语言能干嘛,C语言能做绝大部分IT的事情,如同操作系统,网络协议等等。学了C语言的语法能干嘛?感觉能做的事情不多,1.练习算法,用c语言实现。看看《数据结构和算法分析》,《算法导论》。2.学习linux内核,《linux内核设计与实现》《linux设备驱动程序》《深入理解linux》等等。其他的不太了解
    acros
        19
    acros  
       2014-11-30 11:51:38 +08:00 via iPhone   ❤️ 1
    看几个著名的开源c写的程序。
    确定语法层面没问题,比如quake,doom引擎....
    acros
        20
    acros  
       2014-11-30 11:54:05 +08:00 via iPhone   ❤️ 1
    要提高我觉得可以直接把c自带的库都看过去。比如stdio啥的,我学了c几年后才了解有atexit存在,暴汗。
    nicai000
        21
    nicai000  
       2014-11-30 11:59:56 +08:00   ❤️ 1
    多写, 无他
    xjliao
        22
    xjliao  
       2014-11-30 18:59:14 +08:00   ❤️ 1
    写个编译器 试试
    fishleen
        23
    fishleen  
       2014-12-01 02:34:13 +08:00 via iPhone   ❤️ 1
    如果想更深的话,推荐扫完这本书:c interfaces and implementations
    代码风格紧凑,各种高级的宏的用法,以及有助于理解数据结构。
    就算对着书敲一遍代码也十分有益z
    chuangbo
        24
    chuangbo  
       2014-12-01 09:47:58 +08:00   ❤️ 1
    写一个简单的 DNS 授权(或递归)服务器。几个简单的功能就可以用到以下知识点:
    - 命令行参数
    - Daemon 后台运行:进程
    - 读取配置文件:文件
    - 接收请求:网络
    - 响应请求:查找数据 + 网络 I/O 模型

    DNS 或许是最简单的网络协议了。数据包可以看这个文档,清晰易懂,没废话。
    http://www.networksorcery.com/enp/protocol/dns.htm

    测试 DNS 用 dig 命令就行,windows/Mac/Linux 都可以安装。

    麻雀虽小,五脏俱全。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:24 · PVG 22:24 · LAX 06:24 · JFK 09:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.