课程分类

课程介绍
课程目录
用户评论
课程介绍
课程目录
用户评论

你将获得

  • C语言的本质,底层和灵活应用

教学服务

  • icon

    深入讲解,深学活用

讲师介绍

  • 计算机专业硕士研究生,擅长C、C++和计算机安全,麦洛科菲教学总监,《程序员求职成功路:技术、求职技巧与软实力培养》作者,创立了麦洛科菲高端IT培训,培训了大量成功就职于BAT的学员

  • 课程详情

    周哥简介

    周哥:男,真名周扬荣,毕业于中科院软件所。曾就职于阿里巴巴,奇虎360安全公司,SUN中国工程研究院,北大计算机研究所等,创办了“麦洛科菲”高端IT安全培训 。





    课程内容介绍

    这是一套直接面向企业需求和底层开发的高标准C语言学习教程。收费版内容更全,并且包含了课后作业答案。

    C语言学习意义:

    1.曾经就职于Amazon和Google的卓越程序员Steve Yegge在他的文章《几种编程语言的优缺点》以及《程序员的呐喊》中指出“你必须懂C”,因为C最懂冯诺依曼计算机,而冯诺依曼计算机是当今计算机的架构标准。

    2.底层开发必备

    绝大多数的底层软件,包括操作系统(如Windows, Linux, UNIX等),数据库软件(如MySQL),办公软件(如OpenOffice),杀毒软件(如360),网络通信协议(如TCP/IP),加解密库(比如OpenSSL),包括JAVA,Python,PHP等语言的实现,以及各种内核驱动等都是用C语言开发的。C语言作为编程语言之王,是当之无愧的

    3.安全攻防必备

    4.高效率开发必备

    JAVA JNI

    Php C扩展

    学会了难学的C语言,其它语言小菜一碟

    5.《腾讯传》里指出:马化腾二年级开始把很多精力花在了C语言的学习上。马化腾日后说:“我们最终是靠C打天下的”





    《C语言深学活用》课程共包含下面15个大的章节。每个章节都有很多细节需要深入讲解。其中粗体标识的章节又是其中的重点和难点,比如:变量,函数传参、调用约定,指针等。

    1.Hello world-程序的编写,编译,运行,测试,调试

    2.整数,浮点数编码与存储,进制与转换

    3.数据类型与变量(存储空间,作用域,生命周期)

    4.运算符,表达式,语句

    5.字符串

    6.数组

    7.函数

    q传参:传值,传指针,(传引用)

    q调用约定(cdecl,stdcall,fastcall)

    8.指针

    9.内存布局,分配与泄漏

    10.结构体,联合体,枚举

    11.位运算

    12.宏

    13.文件IO

    14.软件调试

    15.C语言与汇编



    C学习只是开始,只是一个点,学完C请继续构建自己的基础知识体系:



    一,基础知识体系:

    数据结构

    汇编语言

    面向对象思想:C++或者Java

    网络协议与编程

    多线程同步互斥,进程通信

    数据库(SQL编程,C语言调用数据库接口)

    界面开发(MFC,QT,gtk, Android界面等)

    其它编程语言比如python,go等



    二,立足平台,选择自己感兴趣的专业方向:

    专业包括:内核和安全(麦洛克菲内核安全高级班)、大数据、甚至人工智能等

    系统的构建自己的知识体系,而不是局限在某个点上。比如你前几年一直写VB/JavaScript/Delphi/SQL...现在项目组突然不再采用这些语言了,怎么办?

    你至少要构建自己的技术壁垒和平台。学习C就应该构建底层技术或安全相关平台;学习Java,就应该构建你自己的JavaEE平台;Objective-C对应IOS/OS X开发平台;C#对应.Net平台,SQL对应数据库平台。如果用JavaScript,那你对应的是整个前端平台。

    立足平台,你会站得很稳。立足一个点,你可能摔得很惨



    学员评价



    课程勘误

    第1课:Hello world=》程序基础概念入门讲解=》了解:PE格式(PE文件的结构)中

    PE加载基地址默认值应该为:0x400000,而不是0x4000000(后面多了一个0),但其实无论是0x400000还是0x4000000都可以,在VC工具里,程序加载的基地址ImageBase可以在项目属性的链接器(linxer)的高级选项里通过/BASE:"0x400000"来指定。而且更高版本的操作系统比如Windows里,已经引入了地址随机化,因此,加载的基地址会动态随机变化而不再是一个固定值,提高了系统的安全性。



    第2课:整数进制转换里面有个错误,10进制100 0x01100100 应该是 0x64,不是0x68,大概在35分钟左右那里。



    第10课:一维数组定义与实例:

    const int x = 10;

    int a[x];

    这个实际上是不支持的。const类型的变量并没有明确规定是编译阶段常量还是运行期间常量,有可能会推迟到运行期间初始化。

    如果在新的C++11标准下,可以修改为:

    constexpr int x = 10;

    int a[x];

    这样就支持了。constexpr是C++ 11引入的新关键字,明确定义了上面的x是编译阶段常量。



    第13课二级指针一节:37分50秒这个位置,ptr2=*ptr1,这个时候*ptr1是p1,所以ptr2的值就p1的值,p1指向i,所以ptr2也应该是指向i的(即ptr2里存放的是i的地址)。所以,画箭头的时候,画错了,ptr1这个时候指向的不是p1,指向的是i。也就是ptr1和p1相等(里面存放的是i的地址),都是指向i的



    第17课第二节宏的二义性里,indefine写错了,应该为define



    勘误提示:如您在学习过程中发现任何错误,请通告知我们错误所在的课程名称和错误所在视频的时间起始位置。错误一经我们确认,我们将会在该门课程的课程概述里提供错误更正信息,并对您表示衷心的感谢。

    温馨提示
    • 请勿私下交易
      请勿在平台外交易。与机构和老师私下交易造成的任何损失及纠纷,腾讯课堂不承担任何责任
    • 听课说明

      1、电脑:访问腾讯课堂官网 ke.qq.com 查看我的课表或下载win/mac客户端听课

      2、手机/平板:下载腾讯课堂APP, 进入学习页面听课