zoukankan      html  css  js  c++  java
  • 添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)— C语言编程基础

    C语言介绍

    C语言基本是每个编程人员必学的一面语言,很好掌握,是理解编程的关键。很多编程语言基于其编写或者基于此语言的衍生品编写。

    C语言是人机交互的一个基础语言之一,虽然是之一,单一般其实就是唯一。

     

    偶尔用汇编

    其他非C的我没见过,理论上是存在的。没有C之前大家用的,有了C之后估计就少了。

    有了计算机操作基础,可以学习编程了,推荐从C语言开始学习,使用这本书进行学习《C程序设计语言》,此书是C语言的作者编写就知道是多么的权威了,同时此书有英文版本《C程序设计语言(英文版)》,建议都买了学习,毕竟作为计算机学生,英文不好是不行的,很多国外的先进的东西都是英文的。另外也有一遍习题解答,也同时买了。里面的题目都做一遍,编程水平不会差。如果想继续提高C语言的水平,可以看看其他相关图书,比如《C指针》等一堆。

     

     

    参考图书:C语言的图书比较多,一般国外的都是精品,国内的基本就算了。一本书很难学好,多读些图书吧。下面也只是冰山一角。还有很多就不一一列举。基本当当四星以上的都可以买了看看。

     

     

     

    参考视频学习网站:

    1 玩转 C语言 基础课堂

    2 C语言/C++学习指南 (语法篇) 入门到精通(打算开发Windows看看,Linux的参考)。

    3 C语言也能开发网站(高级课程,而且比较高级,长个见识看看)。

    4 计算机专业的课程体系,里面有个C语言程序设计。

     

    参考资料:

    1 http://www.cprogramming.com/里有个c-tutorial。

    2 高质量C++/C编程指南 林锐 博士

     

    学的更好点的,可以参考github上的C项目代码看看。比较出名的推荐几个:

    1 https://github.com/antirez/redis 

    2 https://github.com/nginx/nginx

    可以上网搜索GCC: The Complete Reference等内容查看学习。

     

    上面的内容,如果都学好了,基本算入门,您可以自己学习了,师父领进门,修行靠个人了。

     

    C语言的灵魂-指针

     

    指针

    一个变量存放一个变量的地址(A point is a variable that contains the address of a variable)

    指针的指针

    指针函数

    函数指针

     

    很难学,但是希望你学好!

    很难学,但是希望你学好!

    很难学,但是希望你学好!

     

    如何检验学习效果?

    神一样的指针:

    int *p;

    一个指向整型数据的指针。

     

    int **p;

    一个指针的指针,它指向的指针指向一个整型数据。**p 是 int 类型,所以 *p 是int *类型,即*p是一个指向int的指针,所以p是一个指向int的指针的指针。

     

    int *p[10];

    一个有10个指针的数组,该指针指向整型数据。p[10] 的类型是 int *,所以 用type 替换 int *,也就是 type p[10],即p中每个元素都是type类型。

     

    int (*p)[10];

    一个指向有十个整型数据数组的指针。()是为了当一个整体看待,所以用val替换(*p),上式变为int val[10],所以*p 相当于数组名(即数组的首地址),所以p是一个指向数组(该数组包含10个Int数字)的指针。

     

    int * p(int);

    就一个函数(不是函数指针),该函数有一个整型参数,返回值为一个指向整型的指针

     

    int (*p[10])(int);

    一个有十个指针的数组,该数组中的指针指向一个函数,该函数有一个整型参数并返回一个整型数。根据p[10]是一个函数指针,所以p中每个元素都是一个函数指针。

     

    int (*p)(int);

    定义了一个参数为int,返回值为int的函数指针,函数指针名是p。如果初始化了 p , 则可以通过 p( int ) 调用函数。

     

    代码流程

    整个流程要清楚

     编码

     编译

     执行

     打包

     安装

     

    另外就是看开源项目源码,是否能够完全看懂并修改。

    比如Nginx,Redis等

     

    在我们课程系列的操作系统有个GeekOS实验,也可以检验。

    GeekOS是不错的检验项目,强烈推荐在校学生仔细研究学习。

     

    这个项目我在读硕士时候做过,2周时间,只能看到项目2,一共7个,都做下来就很了不起了,可以做一个学期,慢慢做。里面有部分汇编代码,汇编也学下。

     

    工作中的实际使用情况

     

    基本不用!

     用到的基本是著名的,比如Nginx,Redis等。

     自己修改代码的情况不多

     基本是C++或者Java,或其他

     

    不过也有很多公司需要根据自身的情况调整某些开源项目代码的,所以可以看看开源代码,或者说认真学习研究一个。在这类公司也有需求。

     

    如果你是嵌入式等行业的就例外了。

     

    总结

    好好学,值得你好好学和你的付出。

    个人觉得大学生怎么花功夫在此语言上都不为过。

    考研用/软考用/很多高级语言的基础/…...

    只是为了工作的例外,你可以只学Java,Js等当简单的码农。

     

    掌握了这个,理解其他的都容易些。

     

    致敬

    C语言作者之一Dennis M.Ritchie(丹尼斯·里奇)


    丹尼斯·里奇,C语言之父,UNIX之父。

    丹尼斯·里奇与肯·汤普逊两人发展了C语言,同时发展了Unix操作系统。

    在电脑工业史上占有重要的席位。

     

    欢迎加入程序员的世界,添物科技为您服务。


    欢迎加入程序员的世界,添物科技为您服务。

    欢迎关注添物网的微信(微信号:tianwukeji),微博(weibo.com/91tianwu/),或下载添物APP,及时获取最新信息。
    免费加入QQ群:557373922(内有干货)。
    添物网(http://www.91tianwu.com)出品
    转载声明:本文系添物网原创出品,转载本文请标明出处,完整标注来源[添物网],(包括链接http://www.91tianwu.com)



  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332430.html
Copyright © 2011-2022 走看看