精华内容
下载资源
问答
  • C语言内核深度解析

    千次阅读 2018-03-20 01:31:19
    1.程序运行的目的:结果过程二者全有为了结果int add(int a, int b){return a+b;}为了过程,无需返回值void add(int a, int b){int c;c = a+b;printf("c=%d\n", c);}过程结果皆有int add(int a, int b){...

    1.程序运行的目的:

    结果

    过程

    二者全有


    为了结果

    int add(int a, int b)

    {

    return a+b;

    }


    为了过程,无需返回值

    void add(int a, int b)

    {

    int c;

    c = a+b;

    printf("c=%d\n", c);

    }


    过程结果皆有


    int add(int a, int b)

    {

    int c;

    c=a+b;

    printf("c=%d\n", c);

    return c;

    }

    2、32位的系统环境,定义bool类型的变量,基本用int替代。bool字只需要一个位,但我们定义一个整形替代,看似浪费31个bit,好处效率高,int整形和CPU的数据位宽一样

    展开全文
  • 朱有鹏 嵌入式Linux与物联网软件开发——C语言内核深度解析 无水印版(1).pdf
  • 嵌入式Linux与物联网软件开发——C语言内核深度解析C语言是嵌入式Linux领域的主要开发语言。对于学习嵌入式、单片机、Linux驱动开发等技术来说,C语言是必须要过的一关。C语言学习的特点是入门容易、深入理解难、...


    e3693eb6e550b6c09422de82d902e0068601d1b8

    前言

    嵌入式Linux与物联网软件开发——C语言内核深度解析
    C语言是嵌入式Linux领域的主要开发语言。对于学习嵌入式、单片机、Linux驱动开发等技术来说,C语言是必须要过的一关。C语言学习的特点是入门容易、深入理解难、精通更是难上加难。很多用C语言写了多年单片机程序的老工程师转入嵌入式Linux领域后,都会觉得很难,甚至惊叹“为什么同样是C语言代码,我完全看不懂?”更不用说初学者了,大多数人都会有一种“很难精进、很难掌握”的感觉。

    本书就是为了解决这个问题。朱有鹏老师在由嵌入式软件开发人员转为职业培训讲师后,试图找到一种方式能够将研发实践中的技能和技巧传授给学生,而不仅仅是冰冷晦涩的语法和知识点。没错,我们认为C语言既是一门技艺,也是一种能力,就好像开车、踢足球、厨艺等一样,不只是要“知道怎么回事儿”,还要“玩儿得好”才行。

    本书的原型思想和内容,发源于朱有鹏老师早些年的研发和学习经历,发展于后来数年的线下培训授课经历,并最终成熟于视频课程《4.C语言高级专题》(隶属于《朱有鹏老师嵌入式Linux核心课程》系列视频课程的第4部分)。该套视频课程于2015年10月录制完成,并在不到的一年时间内,已被上千人观看学习,创下了全好评的好成绩。

    本书正是基于这套视频课程的课件整理而来,参与各章节整理和编写的都是学习了视频课程的学生,最终由朱有鹏老师和张先凤老师检验并完善成书。这些参与编写的同学有的已经工作数年、有的则尚未走出大学校园。选择他们合作创作本书,就是为了告诉读者:做技术并不要求你天赋异禀,只需要你感兴趣、愿意去探索和练习,你也可以成功。

    本书的另一大特色是,专门针对嵌入式Linux开发方向而设计。这并不是一句空话,本书的很多内容,如位操作、container_of宏、内核链表、变参等,都是嵌入式Linux开发中重要的技能,而在一般的C语言书中并无过多介绍。

    最后,本书并不是一本零基础系统学习C语言的书,而是一本定位为技能提升型的专著。如果你已经学过或者正在使用C语言,但苦于无法精进,或者在学习嵌入式Linux软件开发中遇到困难,那么试试这本书吧,一定会为你带来收获。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    目 录

    第1章 C语言与内存
    1.1 引言
    1.2 计算机程序运行的目的
    1.3 位、字节、半字、字的概念和内存位宽
    1.4 内存编址和寻址、内存对齐
    1.5 C语言如何操作内存
    1.6 内存管理之结构体
    1.7 内存管理之栈(stack)
    1.8 内存管理之堆
    第2章 C语言位操作
    2.1 引言
    2.2 常用位操作符
    2.3 位操作与寄存器
    2.4 位运算构建特定二进制数
    2.5 位运算实战演练1
    2.6 位运算实战演练2
    2.7 技术升级:用宏定义来完成位运算
    第3章 指针才是C语言的精髓
    第4章 C语言复杂表达式与指针高级应用
    第5章 数组&字符串&结构体&共用体&枚举
    第6章 C语言的预处理、函数和函数库
    第7章 存储类&作用域&生命周期&链接属性
    第8章 C语言关键细节讨论
    第9章 链表&状态机&多线程
    第10章 程序员和编译器的暧昧
    附录 答案

    展开全文
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 第2章 C语言位操作 嵌入式Linux...

    本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    第2章 C语言位操作

    嵌入式Linux与物联网软件开发——C语言内核深度解析

    2.1 引言

    位运算在C语言中有很重要的地位。我们知道底层驱动基本都是采用C语言编写的,驱动之所以能够操作硬件,是因为能够实现对寄存器的控制。在实现对寄存器控制时,必须通过位操作的运算才能够实现,因此可以想见位操作对于底层驱动程序的重要性。

    在本章中,我们除了讲解位操作的基本用法,如位与、位或、位取反、移位、异或等,后面我们还会讲解如何将位运算与宏定义结合使用。因为在底层程序中,大多数的位操作都是通过宏定义的形式去实现。

    展开全文
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第1章 C语言与内存 嵌入式...

    本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    第1章 C语言与内存

    嵌入式Linux与物联网软件开发——C语言内核深度解析

    1.1 引言

    其实我们不知道的是,早期的计算机是没有内存的,但是如今我们去买电脑时,都会十分关心电脑内存的各种参数,因此可以看出内存对于电脑性能的重要性。那么为什么需要内存呢?换句话说,内存与计算机以及程序之间的关系又是什么呢?本章将会以内存为中心,探讨许多与内存相关的概念和话题,这些概念是学好后续C语言知识不可缺少的基础,因此希望读者认真对待本章节的内容。

    展开全文
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.5节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.5 C语言如何操作内存 1.5.1...
  • ldd命令用来查看可执行文件使用了哪些动态库,并且查看这些动态库是否能被加载并被解析。 #ldd test libdemo.so => no found         杂项 变量不能被两种以上的存储类的关键字修饰。 ...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.6节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.6 内存管理之结构体 1.6.1...
  • 当程序对性能非常在乎的时候(如操作系统内核),就会用C/C++语言;当我们对开发程序的速度非常在乎的时候,就会用Java/C#等语言。 1.3 位、字节、半字、字的概念和内存位宽 1.3.1 深入了解内存(硬件和逻辑两个...
  • 0b00000001转化为十进制:1 0b11111110转化为十进制:0 (按照负数解析) 所以可以得出结论:5 >> 2 = 1。在这个移位的过程中,我们也同样发现了一个规律,每进行一次右移位操作,得到的结果是原操作数的一半...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.3节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 位操作与寄存器 2.3.1 ...
  • 第8章 C语言关键细节讨论 8.1 引言 打铁要趁热,通过对前面章节的学习,相信大家已经对C语言有了一定深度的了解。本章中我们主要讲解在C语言实际运用中值得注意的一些细节,主要内容如下: ❶ 什么是操作系统?之...
  • 第3章 指针才是C语言的精髓 3.1 引言 但凡对C语言有过了解的同学,都知道指针是C语言的“生命精华”,C语言之所以能够如此长盛不衰,原因之一也在于其拥有强大的指针。如果想要真正成为C语言高手,就必过指针这...
  • 并且希望通过这两个“入门级”的复杂符号引入C语言复杂表达式的解析方法。 4.2.1 简单理解指针数组与数组指针 要想搞清这两个概念,先抛开C语言,我们从字面上来理解这两个意思,究竟什么是数组指针,什么是指针...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.8节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.8 内存管理之堆 1.8.1 什么...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.2节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.2 常用位操作符 2.2.1 ...
  • 第6章 C语言的预处理、函数和函数库 6.1 引言 本章内容分为三个部分:第一部分讲的是预处理,第二部分讲的是函数,第三部分讲库函数。 在第一部分中我们回顾了编译链接的四个过程,并且对其中预处理所做的工作进行...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.6节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.6 位运算实战演练2 2.6.1 用...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.2节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 计算机程序运行的目的 ...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第2章,第2.5节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 位运算实战演练1 2.5.1 ...
  • 欢迎来到异步社区!... 异步社区依托于人民邮电出版社20余年的IT专业优质出版资源和编辑策划团队,打造传统出版与电子出版和自出版结合、纸质书与电子书结合、传统印刷与POD按需印刷结合的出版平台,提供最新技术资讯,...
  • 二是数组在定义的时候需要明确指定数组元素的个数,并且一般来说个数是不能改变的(Linux内核中会使用变长数组,在高级语言如C++当中也支持变长数组);三是某个元素的移动可能造成元素的大面积移动,效率不高。这些...
  • 答:在编译时,编译器会根据数据类型,决定在内存中所开辟内存空间的字节数,以及对于内存空间中存放数据的解析方式。 第2章 课后题答案 1. 答案: ❶ a|=BIT5 ❷ a &=~BIT5 分析:在32位系统中,宏BIT5所...
  • C语言中是逻辑取反的意思,逻辑取反意思就是0取反为1,非0的数取反为0。 如何用C语言编程实现:如果一个数i是0,则返回0;如果不是0,则返回1? 一般实现如下所示。 if (i == 0){return 0;} else{return 1;} 或者...
  • 5.5 C语言的字符串类型 5.5.1 C语言使用指针来管理字符串 很多高级语言像Java、C#等,都有独立的字符串类型,大多都是用String关键字来表示,用法和int等基本类型基本相同,使用String s1 = "linux"便可以定义一...
  • 7.2 概念解析 7.2.1 存储类 存储类,就是存储类型。 变量空间开辟于内存之中,存储类就是用于描述变量空间开辟于内存中什么地方。事实上内存被分为了栈、堆、数据段、bss段和text段等不同管理方法的内存段,变量...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.7节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.7 内存管理之栈(stack) ...
  • 本节书摘来自异步社区《嵌入式Linux与物联网软件开发——C语言内核深度解析》一书中的第1章,第1.4节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.4 内存编址和寻址、内存...
  • 文章摘自朱有鹏著的代码,理解还不够深刻,用以回忆。 内容出自:书籍188页内容-191页 #include <stdio.h> #include <stdlib.h> struct node*list_for_each(struct node*pH);...struct node *create_node...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,724
精华内容 1,889
关键字:

c语言内核深度解析

c语言 订阅