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

C 的语法基本看完了,下面该学什么?

  •  
  •   station · 2020-03-04 13:15:05 +08:00 via Android · 13407 次点击
    这是一个创建于 1716 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本人是自学 C 语言

    结构体,文件操作( 位运算还没看 )

    这两天在复习,坐坐书上之前都没做的题

    下面是要学什么? 如果有书请推荐下
    101 条回复    2020-03-07 11:13:36 +08:00
    1  2  
    Chenamy2017
        1
    Chenamy2017  
       2020-03-04 13:17:42 +08:00   ❤️ 13
    看完用了 吗?没有用你学它干什么?
    1wlinesperday
        2
    1wlinesperday  
       2020-03-04 13:17:58 +08:00
    学什么取决于你想做什么,不过学了 C,Linux 的那些知识是阔以看看的看了操作系统和计算机网络,然后改学 Java 吧哈哈
    MenghanKing
        3
    MenghanKing  
       2020-03-04 13:21:25 +08:00   ❤️ 3
    http://akaedu.github.io/book/index.html 《 Linux C 编程一站式学习》
    kokutou
        4
    kokutou  
       2020-03-04 13:22:23 +08:00 via Android
    看了有啥用。。。写东西啊。。。
    imn1
        5
    imn1  
       2020-03-04 13:23:46 +08:00   ❤️ 2
    D 的语法,🐶

    理论过关当然是实践啊
    MenghanKing
        6
    MenghanKing  
       2020-03-04 13:24:07 +08:00
    看完这本书就可以试着学习 mysql、redis 和 linux kernel 源码什么的了
    hundan
        7
    hundan  
       2020-03-04 13:27:31 +08:00 via iPhone
    语法不就那么点东西吗...
    fuchunliu
        8
    fuchunliu  
       2020-03-04 13:27:37 +08:00 via Android   ❤️ 9
    接下来当然是把它完全忘掉
    zhujinliang
        9
    zhujinliang  
       2020-03-04 13:27:50 +08:00 via iPhone
    学标准库
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       2020-03-04 13:32:14 +08:00
    c++
    c#
    station
        11
    station  
    OP
       2020-03-04 13:38:12 +08:00 via Android
    @kokutou 所以在做题啊
    skinny
        12
    skinny  
       2020-03-04 13:39:53 +08:00
    你不写东西转头就会把看过的东西忘了
    station
        13
    station  
    OP
       2020-03-04 13:40:28 +08:00 via Android
    @hundan 对,就那些东西,语法学完后面该学什么呢? 我很困惑,所以问吖
    jakezh
        14
    jakezh  
       2020-03-04 13:41:31 +08:00 via iPhone   ❤️ 17
    把昨天那位大一同学的贪吃蛇抄一遍
    yangzhezjgs
        15
    yangzhezjgs  
       2020-03-04 13:47:29 +08:00   ❤️ 8
    首先,你为什么学 C 语言?
    1.为了了解计算机底层原理--->csapp/计算机系统基础
    2.为了学系统编程------->UNIX 环境高级编程
    3.为了嵌入式编程------->嵌入式相关的书
    4.我也不知道为什么学 C------>我也不知道你该看什么
    station
        16
    station  
    OP
       2020-03-04 13:50:38 +08:00 via Android
    @yangzhezjgs 系统软件开发( 我比较偏向 Linux )
    gaigechunfeng
        17
    gaigechunfeng  
       2020-03-04 13:50:49 +08:00   ❤️ 4
    兄弟以为是小说啊,看完一本接一本哦。
    station
        18
    station  
    OP
       2020-03-04 13:51:39 +08:00 via Android
    @gaigechunfeng 所以在练习书上的题目
    imnaive
        19
    imnaive  
       2020-03-04 13:54:06 +08:00
    数据结构,b 站有挺多教程的
    yangzhezjgs
        20
    yangzhezjgs  
       2020-03-04 14:02:08 +08:00   ❤️ 1
    @station UNIX 环境高级编程,UNIX 网络编程 卷 1 卷 2,Linux 多线程服务端编程,面向模式的软件体系结构 卷 2。。。。系统软件应该学 C++,学 C 只算是打个基础。。
    jjianwen68
        21
    jjianwen68  
       2020-03-04 14:05:55 +08:00
    实践出真知
    whatcall
        22
    whatcall  
       2020-03-04 14:15:27 +08:00
    Hello, world! 上机实操了吗?
    encro
        23
    encro  
       2020-03-04 14:16:44 +08:00
    如果是学生的话推荐下慕课北京大学郭炜程序设计与算法一二三,三是 C++。
    如果对游戏有兴趣,昨天有一个 V 右分享的大一 C 课设,DungeonRush 游戏 https://www.v2ex.com/t/649194。
    免费项目实战课程 https://www.v2ex.com/t/649002
    gemini767
        24
    gemini767  
       2020-03-04 14:17:56 +08:00
    ipwx
        25
    ipwx  
       2020-03-04 14:28:48 +08:00
    为了算法和数据结构——学 C++。
    DerekXS1024
        26
    DerekXS1024  
       2020-03-04 14:35:58 +08:00
    数据结构
    cmdOptionKana
        27
    cmdOptionKana  
       2020-03-04 14:37:06 +08:00   ❤️ 3
    学完 C 应该接着学 C++
    然后学 D 语言
    然后学 Erlang
    然后学 Fortran (注意 Erlang 和 Fortran 是函数式语言, 有助于锻练你的思维)
    然后学 Golang (基本语法与 C 差不多,但有一些现代语言的设计,让你编程更方便,同是这也是最近比较火的语言之一,学学有好处)
    然后学 Haskell (也是函数式,很著名的一种经典语言)
    ……
    ……
    最后学 Vlang, 这个语言也很不错,自称结合了 Go 和 Rust 的优点。

    至于后面的 W, X, Y, Z 建议别急着学,先学好上面这些吧。
    cstj0505
        28
    cstj0505  
       2020-03-04 14:39:47 +08:00
    学习下 linux api。然后看看 GNU C 编程
    shfanzie
        29
    shfanzie  
       2020-03-04 14:40:20 +08:00   ❤️ 1
    @cmdOptionKana 还没学完 C++,人就挂掉了。laughcry
    Yvette
        30
    Yvette  
       2020-03-04 14:43:20 +08:00
    学完语法学理论,先把 C++ Primer 前 16 章差不多搞定再说吧
    jinsongzhao
        31
    jinsongzhao  
       2020-03-04 14:46:50 +08:00
    github 上读感兴趣的 C 开源项目,可以做底层或硬件层开发。转学 java,以后可以做底层或数据库开发。学 JavaScript+html,以后做界面开发。这些都是通用的东西。其他语言,到用时再学也不迟。
    crella
        32
    crella  
       2020-03-04 14:48:49 +08:00 via Android
    @cmdOptionKana 那么 P 字开头的应该是 python php perl pascal prolog photoshop 中的哪一个呢?
    zzzmh
        33
    zzzmh  
       2020-03-04 14:51:33 +08:00
    看目的 看规划 学着玩就无所谓了 随便下一步干嘛
    要找工作或者要盈利的话 建议下一个学一个需求大的语言 例如 java/js/node/go/python
    ifxo
        34
    ifxo  
       2020-03-04 14:56:47 +08:00
    普遍的问题,没人带你啥也做不了
    novaeye
        35
    novaeye  
       2020-03-04 14:59:49 +08:00
    C (C, C++, C#)
    D (Dart)
    E (Erlang)
    F (F#)
    G (Go)

    /摊手
    cmdOptionKana
        36
    cmdOptionKana  
       2020-03-04 15:00:48 +08:00
    @crella 顺序是很重要的,一定不能乱!按第 2 个字母顺序,第 2 个相同的就按第 3 个字母顺序,以此类推。
    ashsaviour
        37
    ashsaviour  
       2020-03-04 15:03:47 +08:00
    当然是开发 C+++和 C##啊
    novaeye
        38
    novaeye  
       2020-03-04 15:04:25 +08:00
    @crella 你列的 P 清单后面好像有什么奇怪的东西混进来了~~~~
    psychoo
        39
    psychoo  
       2020-03-04 15:11:25 +08:00
    最终目标是啥……
    cmdOptionKana
        40
    cmdOptionKana  
       2020-03-04 15:17:57 +08:00   ❤️ 2
    突然想起隔壁贴
    https://v2ex.com/t/649194
    我的大一 C 课设,DungeonRush,觉得做的还不错,分享一下~
    guolaopi
        41
    guolaopi  
       2020-03-04 15:20:17 +08:00   ❤️ 1
    《杂粮煎饼做法大全》
    noreplay
        42
    noreplay  
       2020-03-04 15:34:09 +08:00
    @crella 我投 photoshop 一票
    MyPassWordis
        43
    MyPassWordis  
       2020-03-04 15:34:30 +08:00
    别学了,真的
    根据你想要发展的方向,选一个项目自己做,能想到自己的项目更好想不到就找个现成得点子自己实现。
    然后你就知道该学什么了。
    不做科研,只顾埋头学习真的没用。不如从现在开始培养动手能力。
    abbatuu
        44
    abbatuu  
       2020-03-04 15:40:19 +08:00
    C--> C---> C#---> Dart---> Erlang---> F#---> Go
    971586331
        45
    971586331  
       2020-03-04 15:59:32 +08:00
    学数据结构,可以看先看下 cjson 源码,这个源码是我看过规模最小最简单的了,看下别人写程序和自已写的有什么区别
    wozhizui
        46
    wozhizui  
       2020-03-04 16:20:58 +08:00
    C++吧,看你还学有余力的样子,C++教你做人。
    attix
        47
    attix  
       2020-03-04 16:23:24 +08:00
    ?看了下加入时间和以前的帖子,是钓鱼吧
    sewen
        48
    sewen  
       2020-03-04 16:23:59 +08:00
    学完 C 之后基本上可以学 Python 了,你的基础已经可以了。
    wengjin456123
        49
    wengjin456123  
       2020-03-04 16:40:11 +08:00
    然后忘掉,学 js
    IgniteWhite
        50
    IgniteWhite  
       2020-03-04 16:59:00 +08:00 via iPhone
    一把年纪还发钓鱼贴,我差点像楼上各位中招
    ICU
        51
    ICU  
       2020-03-04 17:03:54 +08:00
    21 天 C 语言从入门到精通
    station
        52
    station  
    OP
       2020-03-04 17:07:01 +08:00 via Android
    @attix 不是钓鱼贴
    station
        53
    station  
    OP
       2020-03-04 17:07:32 +08:00 via Android
    @IgniteWhite 还没 30,而且不是钓鱼贴
    crella
        54
    crella  
       2020-03-04 17:18:30 +08:00 via Android
    @novaeye 精通 python 或 php 的敢说自己工资一定比精通 photoshop 或 powerpoint 的高???
    gimp
        55
    gimp  
       2020-03-04 17:22:47 +08:00
    忘掉,哈哈哈哈
    lishunan246
        56
    lishunan246  
       2020-03-04 17:24:16 +08:00
    那当然是学 makefile
    ncwtf
        57
    ncwtf  
       2020-03-04 17:24:47 +08:00
    网上找拼凑的,排名不分先后。
    ActionScript
    Bash
    C++
    Dart
    Erlang
    FORTRAN
    Golang
    Haskell
    ICON
    Java
    Kotlin
    Lisp
    MatLab
    .Net
    Objective-C
    Perl
    QuickBASIC
    Ruby
    Scala
    TCL
    UML
    VBScript
    Whiley
    XML
    YAML
    Z
    zooandzoo
        58
    zooandzoo  
       2020-03-04 17:31:31 +08:00
    @ncwtf 不分先后也就罢了,竟然没有 PHP ?我有点不愿意了,php 是最好的语言
    tt67wq
        59
    tt67wq  
       2020-03-04 17:48:36 +08:00
    当然是学 php 啊!
    a87586179
        60
    a87586179  
       2020-03-04 17:51:54 +08:00
    =-= 学 java,学 JavaScript,学 php 哪个不好,学 C
    cabing
        61
    cabing  
       2020-03-04 17:52:30 +08:00
    学下 linux 基础,写个简单的 http 服务器。
    xdeng
        62
    xdeng  
       2020-03-04 18:00:16 +08:00   ❤️ 1
    下面 应该学 《面食做法大全》
    xkeyideal
        63
    xkeyideal  
       2020-03-04 18:12:17 +08:00
    @cabing 用 C 来写 http 服务器,莫不是和自己过不去
    Madcrow
        64
    Madcrow  
       2020-03-04 19:12:20 +08:00 via Android
    《 c 和指针》《 c 陷阱与缺陷》
    crella
        65
    crella  
       2020-03-04 19:16:43 +08:00 via Android
    @ncwtf 我认为的,N 改成 nim,R 开头的估计学 rust 的人比学 ruby 的多,p 这个吵死了,t 改成 typescript,
    Cbdy
        66
    Cbdy  
       2020-03-04 19:25:43 +08:00 via Android
    接下来可以学 JavaScript 了
    May725
        67
    May725  
       2020-03-04 19:57:16 +08:00 via iPhone
    前两天有一位大一学生写了个漂亮游戏作为 c 语言课程设计
    Revenant
        68
    Revenant  
       2020-03-04 20:03:11 +08:00
    学习要有目标的学,你都没说自己的目标是啥,是准备搞硬件还是软件,如果搞硬件,方向是嵌入式还是单片机
    waruqi
        69
    waruqi  
       2020-03-04 20:31:20 +08:00
    可以上手敲代码,编译跑跑试试了,可以尝试下用 xmake 来构建,快速上手编译和项目维护,对新手很友好。https://xmake.io
    IFoon
        70
    IFoon  
       2020-03-04 20:34:34 +08:00
    PHP
    AmrtaShiva
        71
    AmrtaShiva  
       2020-03-04 20:40:28 +08:00
    rust
    areless
        72
    areless  
       2020-03-04 20:52:22 +08:00 via Android
    没必要认真去看 c 了,代码整洁看 BASIC 这种~ qbasic,二十年前我起初以为写桌面程序学 c 啊 c+,结果 mfc 才是关键
    hankai17
        73
    hankai17  
       2020-03-04 20:57:15 +08:00
    学会忘记它
    nguoidiqua
        74
    nguoidiqua  
       2020-03-04 21:06:00 +08:00 via Android
    学 C 语言基本没用的,因为用 C 的领域你基本是接触不到的,那些需要的可不仅仅是一点编程知识。

    学编程要先看你想进入什么领域再决定学什么,比如你想学做电脑软件,那你要看看现在做桌面软件一般用什么技术。

    现在 Linux 上面做软件可以用 Qt,Qt 这个开放框架需要学的编程语言是 C++。不过讲实话,这个门槛比较高。

    还有个简单且比较流行的选择是 electron,微软著名的开源编辑器 VS Code 就是用这个做的,这个框架支持很多编程语言,比如 JavaScript,简单易学,我建议放下 C,转学这个算了。

    当然,其实你也可以继续学 C 语言,也有框架可用,比如 AWTK,这个框架还支持 JavaScript Lua 等需要,你自己找相关的实战项目教程看看,老实说可能相对冷门不好找。

    个人建议学 electron,框架比较简单,语言更简单,语法粗略看几遍就行了,不要去硬记语法,比如什么位运算这些根本不用学,一般用不上的,起码我还从来没用过,需要用再去查就是了。

    虽然好像浪费了学 C 的时间,但换一下反而能让你更快写出软件。因为用 C 去写 Linux 软件难度要大多了,无论是学还用,需要付出的时间和精力都要多得多,估计大部分人是坚持不下去的,看你自己了。
    zjq123
        75
    zjq123  
       2020-03-04 21:19:05 +08:00
    接下去你应该学习函数指针 用函数指针来实现面向对象
    另一方面 你可以看看结构体和联合体同时使用 比如 php 源代码 C 语言怎么表示 php 变量
    另一方面当然是网络编程 socket 相关的东西 经典的例子 stunnel , shadowsocks 看它们源码 搞明白它们是怎么实现 netfilter redirect 的 不过这个需要 apue 书本的知识
    但是看这些都不能直接产生钱
    zjq123
        76
    zjq123  
       2020-03-04 21:21:48 +08:00
    我觉得应该要高屋建瓴 一切都是面向协议编程 socks5 http l2tp pptp
    面向文档编程 无论做什么都无非是调用 api
    levelworm
        77
    levelworm  
       2020-03-04 21:53:45 +08:00 via Android
    C 基本上都是系统编程的活,我觉得得先学数据结构和算法,然后是计算机组成,最后才能到 C 真正发挥实力的编译原理和操作系统等等。。。
    paoqi2048
        78
    paoqi2048  
       2020-03-04 22:19:29 +08:00
    学 Linux
    dorothyREN
        79
    dorothyREN  
       2020-03-04 22:54:46 +08:00
    颈椎病康复指南
    eq06
        80
    eq06  
       2020-03-04 23:47:59 +08:00
    技术分析,量化策略,CTP 自动化交易
    pabupa
        81
    pabupa  
       2020-03-05 00:08:13 +08:00 via Android
    @cmdOptionKana 看了一遍 vlang 的文档,,,不知道说什么了……好有梦想啊😯
    iziv
        82
    iziv  
       2020-03-05 00:30:30 +08:00
    推荐读一读《程序员的自我修养》这个书,是讲链接和装载的,读完了差不多能知道写出来的 C 程序到底是个什么东西,又是怎么运行起来的
    ericgui
        83
    ericgui  
       2020-03-05 00:49:27 +08:00
    练习几个小项目
    比如贪吃蛇之类的
    danhahaha
        84
    danhahaha  
       2020-03-05 01:07:44 +08:00
    来几把王者荣耀吧
    然后你就会忘记了
    asd7160
        85
    asd7160  
       2020-03-05 08:40:00 +08:00
    钓鱼帖子怎么这么多人认真回复
    focux
        86
    focux  
       2020-03-05 09:18:45 +08:00
    刷刷 leetcode
    NoKey
        87
    NoKey  
       2020-03-05 09:21:32 +08:00
    刷刷 leetcode
    靠自己努力刷完了,就可以去找工作了
    wizardoz
        88
    wizardoz  
       2020-03-05 09:31:35 +08:00
    《数据结构》
    我就是撸完数据结构才觉得自己会编程了。
    wizardoz
        89
    wizardoz  
       2020-03-05 09:34:57 +08:00
    @wizardoz 补充,《数据结构》书里的结构和算法,看懂原理后按自己的理解撸出代码,运行调试。你现在还没到刷题的份上,靠刷题学习不系统。
    melovto
        90
    melovto  
       2020-03-05 10:26:54 +08:00
    可以做图书馆管理系统了 😂
    24bit
        91
    24bit  
       2020-03-05 11:14:36 +08:00
    数据结构和算法
    onice
        92
    onice  
       2020-03-05 11:57:09 +08:00
    了解一门语言的语法除了能做数学运算(就是书上的题)外,基本上干不了什么。
    更重要的是要掌握那门编程语言的生态。像 C++有 QT,可以用来写桌面程序。Java 有 Spring 全家桶,可以进行企业级开发。
    楼主你根据兴趣,想好自己想做什么就行了。C 语言在需要效率的地方用的比较多,应用领域也蛮广的。C 语言写病毒木马这些感觉挺好,写安全软件也可以。游戏也可以,贪食蛇这些都是练手项目。如果比较喜欢像书上那种解题,可以学下数据结构。
    rogerus
        93
    rogerus  
       2020-03-05 13:25:20 +08:00   ❤️ 1
    看你想干什么了,如果想往技术研发路线一步步往上走,那就从原理和实践两方面看,首先说原理性的知识如下。
    数理、逻辑与结构方面的原理:概率论与统计原理,离散数学,数据结构与算法,形式逻辑
    物理机器方面的原理:数字电路,计算机组成原理,汇编,
    系统软件方面的原理:操作系统原理,数据库原理,编译原理
    网络方面的原理:计算机网络

    再说比较偏实践的:软件工程、设计模式、项目管理、组织行为学、目标管理、时间管控。

    最后,无论以上哪门知识,都要了解其历史发展脉络。25 年前《电脑报》我最喜欢看的栏目之一就是《电脑史话》(大概是这个名字,时间太久记不清了)。比如,如果你了解形式逻辑是怎么从亚里士多德那个年代发展到奥卡姆再发展到黑格尔再到罗素的,那么你对编译原理里面那些天书一样的表达式也就不会太困惑。又比如,你对离散数学和数据结构的演化很明了,就对 c/c++和 java 等语言的各种关于结构的库(比如 java 的 collection )会有很大的亲切感。再比如,你如果很了解计算机网络为啥会发展出 OSI 七层参考协议,那么你对软件工程、设计模式里面那些套路(比如什么 KISS 原则啦,Don't call me, I will call you 啦,IoC 啦等等)亦会感到顺理成章。总之一句话,知识是有体系结构的(不论是在时间还是空间上),不能指望用一个单点来突破。

    所以,其实 C 真的只是一个很表面的开头。
    crc8
        94
    crc8  
       2020-03-05 14:27:49 +08:00
    @nguoidiqua electron 算是归到前端系列的吗?
    baozihuihui
        95
    baozihuihui  
       2020-03-05 16:56:20 +08:00
    你还是的孩子,别听他们的。去看看防脱发保健和颈椎保健手册吧
    orzorzorzorz
        96
    orzorzorzorz  
       2020-03-05 17:25:17 +08:00
    学系统级的语言,可以试着写一个 sock5 的代理工具,其他的做个日历,基本就能确定哪些东西该忘记,哪些该重新学一遍。
    jeasonzuo
        97
    jeasonzuo  
       2020-03-05 17:59:15 +08:00
    下面一定要先烧开水 然后放盐
    killeder
        98
    killeder  
       2020-03-06 12:08:27 +08:00
    下一步当然是放弃了
    ddoocc
        99
    ddoocc  
       2020-03-06 14:32:40 +08:00
    为啥要学 c 呢,除开一些基本没有实际用途的语言,c 可以说是最难学,最难用的流行语言之一了,如果没有明确的目的,还是别碰了。
    ddoocc
        100
    ddoocc  
       2020-03-06 14:38:52 +08:00
    c 现在的用途就是接近硬件的那些地方,例如驱动,内核等。这些地方需要一个综合的知识,另外除非你出身很好,否则很难有接触这些领域的机会,你觉得将来能进 nvidia 吗?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2671 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:48 · PVG 23:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.