​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)

添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)— C语言编程基础的更多相关文章

  1. 添物零基础到大型全栈架构师 Java实战及解析(实战篇)- 概述

    ​ 实战篇是在基础之上,进一步提升的内容.通过实战篇可以深入理解Java相关框架和库的使用,能够独立开发小模块,或者按照架构师的指导进行代码编写和完善. 主要讲解核心框架和库的使用和使用场景介绍.通过 ...

  2. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  3. 零基础到架构师 不花钱学JavaEE(基础篇)- 概述

    Java简单来说是一门语言,Java能干什么? 网站:开发大,中,小型网站. 服务器端程序:企业级程序开发. APP:Android的APP基本使用Java开发. 云:Hadoop就是使用Java语言 ...

  4. Kubernetes全栈架构师(基本概念)--学习笔记

    目录 为什么要用Kubernetes? K8s控制节点-Master概念 K8s计算节点-Node概念 什么是Pod? 为什么要引入Pod? 创建一个Pod 零宕机发布应用必备知识:Pod三种探针 零 ...

  5. web全栈架构师[笔记] — 03 html5新特性

    HTML5新特性 一.geolocation PC端 精度比较低 通过IP库定位 移动端 通过GPS window.navigator.geolocation 单次 getCurrentPositio ...

  6. web全栈架构师[笔记] — 02 数据交互

    数据交互 一.http协议 基本特点 1.无状态的协议 2.连接过程:发送连接请求.响应接受.发送请求 3.消息分两块:头.体 http和https 二.form 基本属性 action——提交到哪儿 ...

  7. web全栈架构师[笔记] — 01 ECMAScript6新特性

    ES6新特性 一.变量 var:重复定义不报错:没有块级作用域:不能限制修改 let:变量,不能重复定义,有块级作用域 const:常量,不能重复定义,有块级作用域 二.函数/参数 箭头函数——简写: ...

  8. 2019最新WEB全栈架构师第八期视频教程

    下载链接:https://www.yinxiangit.com/117.html

  9. Kubernetes全栈架构师(Kubeadm高可用安装k8s集群)--学习笔记

    目录 k8s高可用架构解析 Kubeadm基本环境配置 Kubeadm系统及内核升级 Kubeadm基本组件安装 Kubeadm高可用组件安装 Kubeadm集群初始化 高可用Master及Token ...

随机推荐

  1. c++ memset函数

    函数名称:memset 函数所需头文件:#include<cstring> 函数作用:内存赋值函数,用来给某一块内存空间进行赋值的. 函数结构:memset(变量,一个数字,一个数字)  ...

  2. Html5 编程题

    1.请写出下面所示的控件的html 代码? <div>   <div><a>姓名:</a><input type="text" ...

  3. 转载使用 ContentObsever 拦截短信,获取短信内容

    在一些应用上,比如手机银行,QQ,微信等,很多时候我们都需要通过发送验证码到手机上,然后把验证码填上去,然后才能成功地继续去做下面一步事情. 而如果每次我们都要离开当前界面,然后去查收短信,记住验证码 ...

  4. LeetCode 要记得一些小trick

    最近搞了几场编程比赛,面试题或者是LeetCode周赛.每次都不能做完,发现时间不够用. 看了别人的代码才知道,同样实现相同的功能,可能别人只需要用一个恰当的函数,就会比自己少些不少代码,争得了时间. ...

  5. 368 Largest Divisible Subset 最大整除子集

    给出一个由无重复的正整数组成的集合, 找出其中最大的整除子集, 子集中任意一对 (Si, Sj) 都要满足: Si % Sj = 0 或 Sj % Si = 0.如果有多个目标子集,返回其中任何一个均 ...

  6. Scala简单计算实例,其在数据分析方面的优势体会

    程序只是简单的从文件中读取数据,并进行计算. package com.bill.www /** * Created by Bill on 2016/2/3. * 目的:用scala实现简单的数据计算 ...

  7. C#,VB.NET将PPT文档转换为HTML

    PPT文档主要用于展示,有时候我们需要将PPT文档转换为HTML格式方便查看.本文将介绍如何使用C#和VB.NET将PPT文档转换为HTML格式.该方案使用了.NET PowerPoint 组件Spi ...

  8. java用匿名内部类实现多线程堆内存变量共享

    匿名内部类介绍:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html 用Runnable模拟实现共享堆内存变量 import ...

  9. opencv边缘滤波

    2018-03-0422:16:11 import cv2 as cv import numpy as np def bi_demo (image): print ("ceshi" ...

  10. form表单清空、重置

    form_live为formID <input type="button" value="重置" onclick="$('#form_live' ...